独自存活 发表于 2013-11-17 18:19:37

小甲鱼C语言试题里面的问题 大婶求助

#include <stdio.h>
main()
{
      int a = 011;
      printf("%d", a ++);
}                  这段代码 运行后为什么是9011是几进制   新手各种疑问求解决啊 大神

T_未命名 发表于 2013-11-17 18:19:38

如果一个整型常量的第一个字符是数字 0, 那么该常量将被视为八进制数。 ----C陷阱与缺陷。

int a = 011;是给 a 初始化了一个八进制数 011,
转换成十进制就是 9, 这个可以用计算器算一下,我的进制转换也没学好- -、、
a++ 是先使用 a 的值然后再把它加 1, 所以这里它传进 %d 的值还是 011 没有变。

☆﹎尐の潴猪 发表于 2013-11-17 18:44:13

是8进制的,0X是16 进制

寂静的雷声 发表于 2013-11-17 20:43:16

是八进制,一般这种0为首的数值是八进制,16进制是0x,没有这些的是十进制的。

苹果沃珂 发表于 2013-11-18 10:46:33

T_未命名 发表于 2013-11-18 01:00 static/image/common/back.gif
如果一个整型常量的第一个字符是数字 0, 那么该常量将被视为八进制数。 ----C陷阱与缺陷。

int a = 011 ...

鼓掌鼓掌……
页: [1]
查看完整版本: 小甲鱼C语言试题里面的问题 大婶求助