若int型数据占2个字节,则以下语句的输出为 。
int k=-1; printf(“%d,%u\n”,k,k);
A、-1,-1 B、-1,32767 C、-1,32768 D、-1,65535
对于此题,printf是 格式化字符串输出函数 k = -1,且int占2个字节,即16位
-1 是负数,在计算机中是1个符号位(1为负,0为正)15个数据位,负数用补码表示
-即符号位是 1
1的原码是 000 0000 0000 0001
反码是 111 1111 1111 1110
补码是 111 1111 1111 1111
计算机中存的是 1111 1111 1111 1111
因此如果以整形输出(%d)得到 -1,如果以无符号数输出(%u),符号位就被当成数据位,将二进制数(1111 1111 1111 1111)转换为十进制数得到65535
所以此题答案为D