long的大小和C中的int,显示4个字节

size of long int and int in C showing 4 bytes

本问题已经有最佳答案,请猛点这里访问。

我做了下面的实验来了解系统中long int和int的大小

系统规格:64位Windows 7gcc mingw编译器Eclipse CDT

我对我得到的输出感到困惑……我没有理由支持我计划的结果,如果有人对此有任何想法,请分享并帮助我。

程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
#include<conio.h>
int main(){

    unsigned long int b;
    unsigned  int a;

    printf("%d",sizeof(b));
    printf("
"
);
    printf("%d",sizeof(a));

 }

输出:

同一程序的联机gcc compier版本4.8.1给出了不同的输出

enter image description here


规范上说sizeof(int) <= sizeof(long),但至少32位用于long,16位用于int

http://www.cplusplus.com/doc/tutorial/variables/变量/

(前缀singnedunsigned对所需空间没有影响)

如果要使用指定的位宽度,我建议使用int32_tuint64_t等。


根据有关数据类型大小的文档,您的结果是正确的。

在64位Windows安装中,long int(有符号和无符号)和int(有符号和无符号)都是32位,因此它们显示为4个字节。