我正在尝试运用K&R的2.1.练习内容如下:
写一个程序,以确定的范围
char,short,int,和long变量,都signed和unsigned通过打印从标准头合适的值,并通过直接计算.如果计算它们会更难:确定各种浮点类型的范围.
打印标准标题中常量的值很简单,就像这样(例如只显示整数):
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 ×1