gpt4 book ai didi

c++ - 示例 2.1,K&R : Wrong symbolic constants value for LONG_MIN and LONG_MAX?

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:41 25 4
gpt4 key购买 nike

这是我用来查找 LONG 的符号常量值的代码

   #include <limits.h>     //These header files contains the symbolic constants
#include <float.h> //for different datatypes

#include <stdio.h>

int main(void){

printf("\tMininum numeric value for long type: %ld\n", LONG_MIN);
printf("\tMaximum numeric value for long type: %ld\n", LONG_MAX);

printf("\tMaximum numeric value for unsigned long type: %lu\n", (unsigned)ULONG_MAX);
return 0;
}

我得到的输出是:

  Mininum numeric value for long type: -9223372036854775808
Maximum numeric value for long type: 9223372036854775807
Maximum numeric value for unsigned long type: 4294967295

但是如果从手册页中看到 limits.h。这些是 limits.h< 中 LONG_MINLONG_MAXLLONG_MINLLONG_MAX 的符号常量 我系统中的文件。

  {LONG_MIN}
Minimum value of type long.
Maximum Acceptable Value: -2 147 483 647

{LONG_MAX}
Maximum value of a long.
Minimum Acceptable Value: +2 147 483 647

{LLONG_MIN}
Minimum value of type long long.
Maximum Acceptable Value: -9223372036854775807

{LLONG_MAX}
Maximum value of type long long.
Minimum Acceptable Value: +9223372036854775807

就好像,程序正在给我 Long long 符号常量的值。

为什么会这样?

最佳答案

类型的大小是可变的。 long至少 32 位(这给出了 +-20 亿范围),但允许更大。例如,在 64 位系统上,它可能是 64 位。

long long 必须至少为 64 位,但当然可以更大。

这些大小取决于底层硬件平台编译器。例如,在使用 GCC 的 Windows 64 位系统上,long 是 64 位,但使用 Visual C++ 编译器时,long “仅”是 32 位。

阅读更多关于 integer types in this reference 的信息.

关于c++ - 示例 2.1,K&R : Wrong symbolic constants value for LONG_MIN and LONG_MAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965521/

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