有一例题如下: main() { unsigned int a=65535; printf("a=%d,%o,%x,%X,%u\n",a,a,a,a,a); } 求运行结果。

日期:2010-11-09 23:39:00 人气:2

有一例题如下: main() { unsigned int a=65535; printf("a=%d,%o,%x,%X,%u\n",a,a,a,a,a); } 求运行结果。

这里说是不对的。 要看什么机器什么的编译器才能得出结果。 的确a=65535 十六进制是0xFFFF 但如果unsigned int 类型是4字节的,你打印出来的依然是 a=65535 如果unsigned int 类型是2字节的,这时就是-1了 因为计算机采取的是补码来保存数据的 a=65535 二进制就是1111 1111 1111 1111,这是补码,第一位是符号位,等于1时就表示是负数。 111 1111 1111 1111 减1再取反就是000 0000 0000 0001 这就
    A+
热门评论