int a=65535,int b=-1,printf("%d,%o,%x,%u", a, a, a, a); printf("%d,%o,%x,%u", b, b, b, b);结果
int a=65535,int b=-1,printf("%d,%o,%x,%u", a, a, a, a); printf("%d,%o,%x,%u", b, b, b, b);结果
日期:2011-12-06 13:44:52 人气:2
int是16位有符号整型,正数在计算机中以原码方式存储,负数则用补码形式存储。
-1是负数,以补码形式存储,即0xffff
65535的原码也是0xffff
所以有这样的结果也就不奇怪了。
补码:保持符号位不变,其他位按位取反(即反码)再加一,即可得到该数的补码