问题 单项选择题

下面程序段的输出结果是( )。
int i=32770;
printf("%d\n", i);

A.32769

B.32767

C.-32766

D.输出不确定数

答案

参考答案:C

解析: 在Turbo C 20环境中,int数据类型在内存中只占两个字节,其表示形式为二进制补码形式,所以范围是:-32768~ 32767,即10000000000000002~01111111111111112(首位为符号位)。而32770转换为二进制为10000000000000102其符号位为1故输出时为一个负数,而它的绝对值是求负后的结果,补码求负的方法是:先按位求反,再加一。所以求得的绝对值为01111111 111111012+1=0111111111111102,即十进制的32766。综上所述,选项C正确。

单项选择题
选择题