名称: 0026 整型数据的溢出规律
作者: 丁进
时间: 2021.2.21
#include <stdio.h>
int main()
{
for (int i = 2147483647, a = 0; a < 5; i++, a++)
{
printf("% d,溢出%d\n", i,i- 2147483647);
}
for (short i = 32767, a = 0; a < 5; i++, a++)
{
printf("% hd,溢出%hd\n", i, i - 32767);
}
for (char i = 127, a = 0; a < 5; i++, a++)
{
printf("% d,溢出%d\n", i, (char)(i - 127));
}
for (char i = -128, a = 0; a < 5; i--, a++)
{
printf("% d,溢出% d\n", i, (char)(i - (-128)));
}
}
输出结果:
2147483647,溢出 0
-2147483648,溢出 1
-2147483647,溢出 2
-2147483646,溢出 3
-2147483645,溢出 4
32767,溢出 0
-32768,溢出 1
-32767,溢出 2
-32766,溢出 3
-32765,溢出 4
127,溢出 0
-128,溢出 1
-127,溢出 2
-126,溢出 3
-125,溢出 4
-128,溢出 0
127,溢出-1
126,溢出-2
125,溢出-3
124,溢出-4
设数据类型的取值范围:max ≤ i ≤min,n为超过max的溢出部分;
整型数据溢出规律总结:
max+1=min
max+2=min+1
max+3=min+2
…
max+n=min+n-1
1.数据类型的取值范围max和min形成一个闭环;
max+1=min
2.上限溢出后显示的数据=min+n-1;
max+n=min+n-1 (此时n为正数)
3.下限溢出后显示的数据=max+n+1;
max+n=min+n-1 => min+n=max+n+1(此时n为负数)
4.上限溢出的数据=上限溢出后显示的数据-max;
max+n=min+n-1 => n=(min+n-1)-max;(此时n为正数)
5.下限溢出的数据=下限溢出后显示的数据-min;
min+n=max+n+1 => n=(max+n+1)-min;(此时n为负数)