怎么通过程序计算出int型整数的范围
下界:
#include<stdio.h>
#include<math.h>
int main()
{
int a;
double b1,b2;
a=-2147483000;
b1=a;
b2=a;
printf("%d\n",a);
do{
b1=b2;
printf("%d\n",a);
a--;
b2=a;
}while(b1-b2<1.2&&b1-b2>0.9);
return 0;
}
或者
#include <stdio.h>
int main() {
int a;
a = -214748000;
while (1) {
// 记录当前a的值
int prev_a = a;
// a减1
a--;
// 判断是否发生溢出
if (a > prev_a) {
// 打印溢出前的值和溢出后的值
printf("溢出前的值: %d\n", prev_a);
printf("溢出后的值: %d\n", a);
break;
}
}
return 0;
}
上界:
#include<stdio.h>
#include<math.h>
int main()
{
int a;
double b1,b2;
a=2147483000;
b1=a;
b2=a;
printf("%d\n",a);
do{
b2=b1;
printf("%d\n",a);
a++;
b1=a;
}while(b1-b2<1.2&&b1-b2>0.9);
return 0;
}
或者
#include <stdio.h>
int main() {
int a;
a = 214748000;
while (1) {
// 记录当前a的值
int prev_a = a;
// a加1
a++;
// 判断是否发生溢出
if (a < prev_a) {
// 打印溢出前的值和溢出后的值
printf("溢出前的值: %d\n", prev_a);
printf("溢出后的值: %d\n", a);
break;
}
}
return 0;
}
注释:在大多数现代计算机系统中,整数采用补码形式存储,当发生溢出时会出现类似变成相反数(或表现出特定循环特征)的现象,所以方法二中采用>或<来判断
1156

被折叠的 条评论
为什么被折叠?



