运行这样一个程序
#include <stdio.h>
int main()
{
int a = 32767;
short b = 1;
b = a + 1;
printf("%d\n",b );
}
最终的输出值为 -32678
运算过程如下:
32767为int型数据,在内存中存储默认带符号,为0111111111111111
32767+1后赋值给b
0111111111111111
+
000000000000001
=
100000000000000
b为short型数据,占4个字节,其中一位为符号。将int赋值给short时,只要原封不动的将数据传送,
因此 short b = 1000000000000000
为-32768的补码,因此输出-32768.
|
|