c语句输出问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:33:55
问下在C语言中:
char c;
c='/376';
printf("%c,%d\n",c,c);
这个语句为什么后边C会输出-2

我运行你的程序输出的是6,54(我的编译器是dev-c++)
原因是,
char表示单个字符,
c='/376'的结果是
c='6'
而字符6的ascii码是54
不过我想你问题里面/37应该是\376吧,这样的话可以得到?,-2的结果(这个?是在xp下才这样的)
这是由于char类型相当于是代符号的单字节整数
最高位是1的时候表示负数
首先\xxx是个8进制的数
\376换成十进制是254
表示为二进制是11111110
这个就是-2
知道补码的知识就不难了
-2 的原码=2的原码=00000010
取反为11111101
在加1就是11111110
就是无符号情况下的254

后面的那个c转不了%d类型

%d是整型数据,%c是字符型!
输出类型要与定义的变量类型一样!

我在vc++6.0调试,输出的结果是
6,54和你说的不一样。但是,楼上说的
%c,什么输入要和类型一致那个,那个说法不对,
C里有说明,%c,和%d,是通用的,
正常字符型的输出是0-255之间的整数。而且就算是不一致的话,有些类型还会进行自动类型转换哪。

C语言里有个规定,只要是返回值在0-255之间的字符型可以看成是整型,但是,输出的格式里最好还是保持和定义时的一致哦。

佩服上上楼的解答,应该是那样的吧.