相关疑难解决方法(0)

如何以编程方式确定C中int数据的最大和最小限制?

我正在尝试运用K&R的2.1.练习内容如下:

写一个程序,以确定的范围char,short,int,和long变量,都signedunsigned通过打印从标准头合适的值,并通过直接计算.如果计算它们会更难:确定各种浮点类型的范围.

打印标准标题中常量的值很简单,就像这样(例如只显示整数):

printf("Integral Ranges (from constants)\n");
printf("int max: %d\n", INT_MAX);
printf("int min: %d\n", INT_MIN);
printf("unsigned int max: %u\n", UINT_MAX);
Run Code Online (Sandbox Code Playgroud)

但是,我想以编程方式确定限制.

我尝试了这个代码似乎应该可以工作,但它实际上进入一个无限循环并被卡在那里:

printf("Integral Ranges (determined programmatically)\n");

int i_max = 0;

while ((i_max + 1) > i_max) {
        ++i_max;
}

printf("int max: %d\n", i_max);
Run Code Online (Sandbox Code Playgroud)

为什么这会陷入循环?似乎当整数溢出时,它会从2147483647跳转到-2147483648.递增的值显然小于先前的值,因此循环应该结束,但它不会.

c

7
推荐指数
1
解决办法
4649
查看次数

标签 统计

c ×1