为什么long int和int在我的计算机中具有相同的最大值

时间:2016-03-29 21:46:17

标签: c++ c size

我正在学习C编程语言,在玩一些代码时偶然发现了一些东西。我被认为int有4个字节,因此最大值为+2147483647(问题是long int)。但是当我用GCC编译器在我的计算机上测试它时,结果是不同的。我尝试使用long int,它给出了相同的最大大小。你能告诉我这种行为吗?其他问题并没有帮助我理解潜在的原因。让我添加一些例子,我试图找出发生了什么。

enter image description here

代码示例:

#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;
}

2 个答案:

答案 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位,具体取决于操作系统和其他情况。 此外,正如其他人所指出的那样,您对变量的打印可能会截断它。