我在 Windows 计算机上使用 Codeblocks 和 GNU 编译器。当编译器运行时,它会在以下条件下运行:
mingw32-gcc.exe -Wall -g -std=c11 <filename> -o obj\Debug\main.o
我的代码如下:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("INTEGER min: %d\n", INT_MIN);
printf("INTEGER max: %d\n\n", INT_MAX);
printf("UNSIGNED INTEGER max: %u\n\n", UINT_MAX);
printf("LONG INTEGER min: %ld\n", LONG_MIN);
printf("LONG INTEGER max: %ld\n\n", LONG_MAX);
//printf("LONG LONG INTEGER min: %lld\n", LONG_LONG_MIN);
//printf("LONG LONG INTEGER max: %lld\n\n", LONG_LONG_MAX);
printf("UNSIGNED LONG INTEGER max: %lu\n\n", ULONG_MAX);
//printf("UNSIGNED LONG LONG INTEGER max: %lld\n", ULONG_LONG_MAX);
printf("\n");
return 0;
}
我对此代码的输出:
INTEGER min: -2147483648
INTEGER max: 2147483648
UNSIGNED INTEGER max: 4294967295
LONG INTEGER min: -2147483648
LONG INTEGER max: 2147483648
UNSIGNED LONG INTEGER max: 4294967295
引用 LONG LONG 整数的行被注释掉,因为编译器给出了错误:
error: 'LONG_LONG_MIN' undeclared (first use in this function)
error: 'LONG_LONG_MAX' undeclared (first use in this function)
error: 'ULONG_LONG_MAX' undeclared (first use in this function)
但是,在键入代码时,CodeBlocks 提供了代码提示,表明我实际上可以使用 LONG_LONG 常量。因此,我需要以下问题的答案:
- 为什么整数和长整数有相同的限制?长整数不应该有更大的值范围吗?
- 为什么我在使用 LONG_LONG 常量时遇到问题?这是否意味着我不能使用 long long 整数?
谢谢