以下程序的输出结果为( )。 #include <stdio.h> void main() {s

2024-11-22 18:55:11
推荐回答(2个)
回答(1):

这些结果不一定对的。之所以说不完全对是因为不同的系统对printf 的参数处理方式可能不一样。常见的会把 short 升级为int哦

#include 
void main() {
    short i;
    i=-4;
    printf("\ni:dec=%d, oct=%o, hex=%x, unsigned=%u\n",i,i,i,i);
}

我们假设 printf不会把 short  升级为 int, 那么我们有 

short 是 16位 二进制 

原码 short 4 = 0000 0000 0000 0100

反码 short -4 = 1111 1111 1111 1011

补码 short -4 = 1111 1111 1111 1100

因此 八进制是 0177774 ,十六进制是 0xfffc

如果把这个数看做无符号数,那么就是 65532

回答(2):

计算机以补码存放数据-4补码为 short 两个字节16位。1111,1111,1111,1100。剩下的进制转化下就可以得到你那些答案