A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© springD 中级黑马   /  2015-11-19 14:06  /  778 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运行这样一个程序

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马