gpt4 book ai didi

c - 怎么可能比 (unsigned long long) > LONG_MAX 大?

转载 作者:行者123 更新时间:2023-12-03 15:35:23 25 4
gpt4 key购买 nike

我在需要更新的算法中找到了这段代码:

 if (value > (unsigned long long) LONG_MAX)

编辑: value是两个相除的结果 uint64_t数字。

我明白 (unsigned long long) LONG_MAX是一个非常大的数字:
   #include "stdio.h"
#include "limits.h"

int main() {
unsigned long long ull = (unsigned long long) LONG_MAX;
printf("%lu",ull);
return 0;
}

版画 9223372036854775807
那么我在这里比较的是什么?这在什么情况下 if语句将评估为 true ?

最佳答案

一个 floatdouble可以比那个大。 C standard的附录Ep5规定任何一种类型都必须能够保存至少与 1E37 一样大的值。这是一个大于 LONG_MAX 的值必须至少为 2147483647:

The values given in the following list shall be replaced by implementation-defined constant expressions with values that are greater than or equal to those shown:

#define DBL_MAX 1E+37
#define FLT_MAX 1E+37
#define LDBL_MAX 1E+37


所以如果 value是这两种类型中的任何一种,它都可以评估为真。

编辑:

valueuint64_t ,其最大值为 18446744073709551615,这也可以大于 LONG_MAX .

关于c - 怎么可能比 (unsigned long long) > LONG_MAX 大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60282407/

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