c语言中32769输出的结果应该是什么,要过程

如题所述

这个属于数据溢出吧,C中整型的范围是-32768-32767,是用二进制存放的。32767
就是
0111111111111111(16位),第一位是符号位,0代表正,1代表负,当输入32768时候,变成1000000000000000(-32768的补码),即输出-32768,所以当输入32769时,为1000000000000001,根据求补码的原则,求出这个数值为-32767。以此类推。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-16
C的有效数值是-32768-32767,你这个应该是输出-1,好像是超过范围都是输出-1

c语言中32769输出的结果应该是什么,要过程
这个属于数据溢出吧,C中整型的范围是-32768-32767,是用二进制存放的。32767 就是 0111111111111111(16位),第一位是符号位,0代表正,1代表负,当输入32768时候,变成1000000000000000(-32768的补码),即输出-32768,所以当输入32769时,为1000000000000001,根据求补码的原则,求出这个数值为-32767。...

在c语言中输入:int a=32679结果是什么
32769这个数在内存中的16进制存储形式为0X8001 至于a的值到底是多少,那要看你使用什么编译器了,在不同的编译器下运行结果是不一样的。你使用C-free、VC系列,编译器一般会给整型int 分配4个字节,所以没有超出范围,仍为32769 如果你使用的是单片机的编译器,一般给int只分配8个字节,所以这个数据...

C语言中一个补码问题!
首先:补码分两种,一种是正数的补码,另一种是负数的补码。正数的补码就是其原码本身。负数的补码则是除符号位,其余取反,再+1.32769超过了8位的范围啊,8位补码能表示的范围只有-128——127.只有16位才可以表示32769这么大的数字。结果是:0000,0001 如果用强制类型转换的话:取低八位 你可以...

c语言 short int i =32769; 输出i=? 输出结果怎么变负数了
short只有2字节,范围-32768~32767,32769已经超过上界,发生上溢,变为-32767 上界再向上增长:32767+1=-32768

C语言的unsigned int到底是什么意思
C语言中unsigned int是无符号整数的意思。无符号整型(unsigned int):(1)我们都知道整型是4个字节(有些编译器不同,可能会是2个),即32位,无符号整型当然也为32位。(2)既然是32位,无符号整型的取值是32个0~32个1,即:0~4294967295 (3)我们举个例子:32位有点长,所以我们拿16位...

C语言这个短整形来
选C。首先,short int类型是16位二进制有符号数,负数通过补码表示。那么,32769转成二进制是:1000 0000 0000 0001,若保存到16位中,最高位刚好为1,被识别为负数。补码求负数的相反数很简单:减1,然后求反码。结果是0111 1111 1111 1111,转为十进制即为32767,所以原来的数就是-32767了 ...

C语言数据溢出问题
在C语言中,数据的存储就像一个圆圈,正数溢出数据就会从最小负数开始,负数溢出数据同理,打个比方(简略写一下):int a=32768,b=-32769;printf("a=%d,b=%d",&a,&b);则会输出a=-32768,b=32767;这样则50000输出就是(50000-32767)+(-32768)+(-1)=-15536 ...

c语言输出语句问题
正常的机器对%ld即long型的输出应该是32769的即0x00008001 而你的机器输出的-2147418112即0x80010000可见16位反了。至于为什么,我也不清楚了,可能是你的编译器坏了或设置不正确。--- AM蘑菇:你这是32位编译器人家学的是16位的 --- 我明白了,请参看:http:\/\/zhidao.baidu.com\/question\/11301...

C语言程序输出数据溢出问题
在c语言中,数据的存储就像一个圆圈,正数溢出数据就会从最小负数开始,负数溢出数据同理,打个比方(简略写一下):int a=32768,b=-32769;printf("a=%d,b=%d",&a,&b);则会输出a=-32768,b=32767;这样则50000输出就是(50000-32767)+(-32768)+(-1)=-15536 ...

C语言?当int数字超过32767后它会显示什么数字?还有tc2.0和C++6.0有哪些...
如果输入32769,在TC中发生溢出显示-32767(注意:溢出后输出的数不是随机的,那是根据二进制存储方式算出的),而在VC++中没有溢出就显示32769 具体计算方法:十进制数32769的二进制表示为 "1000 0000 0000 0001 "因为第一位是符号位(最左边的一位,1代表负数,0代表正数),且符号位不变,所以取...

相似回答
大家正在搜