我正在学习C编程语言,在玩一些代码时偶然发现了一些东西。我被认为int有4个字节,因此最大值为+2147483647(问题是long int)。但是当我用GCC编译器在我的计算机上测试它时,结果是不同的。我尝试使用long int,它给出了相同的最大大小。你能告诉我这种行为吗?其他问题并没有帮助我理解潜在的原因。让我添加一些例子,我试图找出发生了什么。
代码示例:
#include <stdio.h>
#include <limits.h>
int main(void){
int a = 1, i;
printf("int limit: %d\n", INT_MAX);
printf("long int limit: %li\n", LONG_MAX);
for (i = 0; i < 10; i++){
a *= 10;
printf("A: %d\n", a); // To see when a is corrupted.
}
return 0;
}
答案 0 :(得分:1)
您正在使用%d将它们打印出来,这是造成这种误解的原因。
答案 1 :(得分:0)
C ++标准保证int大于或大于short,long大于或大于int等。 有关所有详细信息,请参阅http://en.cppreference.com/w/cpp/language/types或标准本身。 在32位机器上,32位通常是int的大小。在64位机器上,int可以是32位或64位,具体取决于操作系统和其他情况。 此外,正如其他人所指出的那样,您对变量的打印可能会截断它。