黑马程序员技术交流社区

标题: C语言学习第2天-补码 [打印本页]

作者: springD    时间: 2015-11-19 14:06
标题: C语言学习第2天-补码
运行这样一个程序

#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.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2