fm2017不让球员退役:printf("%d \n",12 &012)

来源:百度文库 编辑:高考问答 时间:2024/04/27 19:22:24
语句:printf("%d \n",12 &012);的输出结果是8
谁能给我解释下,这个“8”是怎么来的~~~~
还有:
main()
{ char x=0xFFFF; printf("%d \n",x--); }
这个结果的“-1”是怎么来的?

12 & 012 就是12和10进行按位与运算(012是八进制12),也就是:
(二进制数)1100 & 1010 = 1000
即8。

问题补充的程序有问题。
char类型的长度是一个字节,而0xffff已经是两个字节了。应该是0xff吧?printf("%d \n",x--)函数参数首先传递的是x--这个,但是它是先返回值才减小,因此x传递过去时候仍然是0xff。
0xff当作为无符号数的时候,数字为255,作为带符号数时候,是-1。char类型是带符号的,因此是-1。