首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以假设长int的大小总是4个字节吗?

我可以假设长int的大小总是4个字节吗?
EN

Stack Overflow用户
提问于 2016-03-07 13:07:45
回答 10查看 35.6K关注 0票数 78

long int (据我所知,它是long的同义词)总是4字节吗?

我能依赖这个吗?如果不是,基于POSIX的操作系统会是真的吗?

EN

Stack Overflow用户

发布于 2016-03-07 13:18:45

正如@delnan所指出的那样,POSIX实现将longint的大小保持为未指定的大小,并且在32位和64位系统之间常常存在差异。

long的长度主要与硬件相关(通常与CPU上的数据寄存器大小相匹配,有时与其他软件相关的问题,如OS设计和ABI接口)。

为了让您放心,sizeof不是一个函数,而是一个编译器指令*,所以您的代码在使用sizeof时不使用操作--这与编写数字一样,只是它是可移植的。

用途:

代码语言:javascript
运行
复制
sizeof(long int)

*正如Dave在注释中指出的那样,在编译期间(例如使用可变长度数组)无法计算值时,将在运行时计算sizeof

另外,正如在另一个注释中指出的,sizeof考虑了实现所使用的填充和对齐,这意味着实际使用的字节可能与内存中的大小不同(这在位移位时可能很重要)。

如果要查找特定字节大小的变量,请考虑使用字节数组,或者(我假设支持) C99在stdint.h中定义的类型--正如@dbush所建议的那样。

票数 13
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35844586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档