c语言选择题

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

A)32769
B)32767
C)-32767
D)输出不是确定的数
为什么答案选c
求大神详解 short int 定义的和int定义有什么区别吗!!

第1个回答  2014-03-26
因为short int类型占2字节(16位),而32769的二进制位是1000 0000 0000 0001

而二进制数按有符号short int类型解释(二进制补码)就是-32767。
第2个回答  2014-03-26
short int 定义的和int定义在32位计算机上是一样的,都是两个字节,有符号的整型数。

两个字节,如果是无符号的数,最大可以是0XFFFF,即65535;
如果是有符号的数,可以存放的数是-32768到32767。
32769明显已经超出范围了,所以变成了负值。
至于具体为何是那个值,你使用二进制算一下就知道了
第3个回答  2014-03-26
一般没区别,这个得看编译器的设定,这题是因为32769>32767溢出了,所以显示负数
第4个回答  2014-03-26
short int 占两个字节int占四个字节存储空间不同
第5个回答  推荐于2016-12-01
C++标准规定,int占一个机器字长。在32位系统中int占32位,也就是4个字节,而在老式的16位系统中,int占16位,即2个字节。而C++标准中只限制规定short int不能超过int的长度,具体长度的可以由C++编译器的实现厂商自行决定。目前流行的32位C++编译器中,通常int占4字节,short int占2字节。其中short int可以简写为short。类似地,C++标准只限制了long int不得小于int的长度,具体也没有作出限制。
而实际上他们的表示范围都是-32768~32767
32769超出这一范围,我猜机内使用了补码或者反码表示结果就是-32767本回答被提问者和网友采纳
相似回答