#include <stdio.h>
//预处理器命令
void main()
{
short int a,b;
//声明a和b为短整型
a=32767;
//短整型a赋值为32767
//32767转为带符号的二进制数为 0111111111111111,其中首位是符号位
//符号位的 0 表示 正数,1 表示负数
b=a+1;
//短整型b赋值为 短整型a加1
/*
即: 在 0111111111111111 上 加1 (计算机内计算使用的是二进制),
得 01000000000000000,但是此处最大位数限制是16位,超出了一位,
出现数据溢出(就像装满水的杯子不停的倒水最上面的水会溢出杯子一样),
所以b实际得到的是 1000000000000000 !!!
不同编译器 的数据 阈值 存在差异(这里使用的是: vs2010 win32位版)
短整型数据 最大位数范围为 16位二进制数(包含符号位)
*/
printf("(短整型)a等于%d \n(短整型)a加一得到的值为%d \n出现整数溢出!!! \n\n",a,b);
//打印输出
}
//主函数
运行效果: