gpt4 book ai didi

计算C中long的范围

转载 作者:行者123 更新时间:2023-11-30 18:24:42 25 4
gpt4 key购买 nike

我正在用 C 编写一个程序来计算不同数据类型的范围。请看下面的代码:

#include <stdio.h>

main()
{
int a;
long b;

for (a = 0; a <= 0; --a)
;
++a;
printf("INT_MIN: %d\n", a);
for (a = 0; a >= 0; ++a)
;
--a;
printf("INT_MAX: %d\n", a);
for (b = 0; b <= 0; --b)
;
++b;
printf("LONG_MIN: %d\n", b);
for (b = 0; b >= 0; ++b)
;
--b;
printf("LONG_MAX: %d\n", b);
}

输出是:

INT_MIN: -32768
INT_MIN: 32767
LONG_MIN: 0
LONT_MAX: -1

程序花了很长时间才打印长值。我还在第三个循环中放置了一个 printf 来测试程序(此处未提及)。我发现b即使变成正数也没有退出循环。

我用了同样的计算方法。为什么它对 int 有效但不能持续很长时间?

最佳答案

您使用了错误的格式说明符。由于 b 的类型为 long,因此使用

printf("LONG_MIN: %ld\n", b);
<小时/>

事实上,如果您启用了所有警告,编译器可能会警告您,例如:

t.c:19:30: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
printf("LONG_MIN: %d\n", b);

关于计算C中long的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com