竹逸 发表于 2022-8-7 17:33:37

为啥我的long型是占4个字节?



课件里说long型可以存放int的数据,但int型不一定能存放long型的数据,那说明long型所占的内存空间应该int型大才是啊,可是为啥我的long和int占字节数都一样?

tommyyu 发表于 2022-8-7 17:45:59

int 和 long一样,long long 才比 int 大

竹逸 发表于 2022-8-7 17:54:34

tommyyu 发表于 2022-8-7 17:45
int 和 long一样,long long 才比 int 大

既然都一样,那为啥int和long运算时,int要转换成long,它们不是都占4个字节么,有什么区别吗?

tommyyu 发表于 2022-8-7 17:55:57

竹逸 发表于 2022-8-7 17:54
既然都一样,那为啥int和long运算时,int要转换成long,它们不是都占4个字节么,有什么区别吗?

int和long的区别

jackz007 发表于 2022-8-7 18:25:38

          对于 64 位 Windos 系统 C / C++ 编译器而言,int 和 long 是一样的;对于 64 位 Linux 系统而言,int 占用 4 字节,long 占用 8 字节。

dolly_yos2 发表于 2022-8-7 18:40:38

去看 C 语言标准就会发现,标准要求 long 和 unsigned long 至少为 32 位宽,而 int 和 unsigned int 至少为 16 位宽。至于具体实现为多宽是实现的自由。
(来自 5.2.4.2.1 Characteristics of integer types <limits.h> )

hrpzcf 发表于 2022-8-7 18:41:48

32位linux: int 4,long 4,long long 8
64位linux: int 4,long 8,long long 8
Windows:int 4,long 4,long long 8

C语言标准并没有定死long类型的占用字节数,所以不同平台编译器上long的占用字节数有可能是不同的

竹逸 发表于 2022-8-7 19:33:36

hrpzcf 发表于 2022-8-7 18:41
32位linux: int 4,long 4,long long 8
64位linux: int 4,long 8,long long 8
Windows:int 4,long ...

好的,谢谢,我以为是我的编译器出问题了{:10_266:}

竹逸 发表于 2022-8-7 19:34:20

jackz007 发表于 2022-8-7 18:25
对于 64 位 Windos 系统 C / C++ 编译器而言,int 和 long 是一样的;对于 64 位 Linux 系统而言 ...

原来是和系统有关{:10_269:}
页: [1]
查看完整版本: 为啥我的long型是占4个字节?