以c为单位的数据类型的大小 [英] size of a datatype in c
本文介绍了以c为单位的数据类型的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
数据类型的大小取决于硬件体系结构还是取决于编译器?
我想知道决定数据类型大小的真正影响因素是什么?
int
编译器(更确切地说是"实现")可以自由选择大小,但要遵守C标准中的限制(例如,推荐答案必须至少为16位)。编译器可以选择遵守其他标准,如POSIX,这些标准可以添加更多约束。例如,我认为POSIX规定所有数据指针的大小相同,而C标准完全适用于sizeof(int*) != sizeof(char*)
。
您经常看到缩写用来表示使用了几个ABI中的哪一个。例如,当64位平台上的编译器说它是LP64时,这意味着long
和指针是64位,省略的是int
是32位。如果显示为ILP64,则表示int
也是64位。
归根结底,这更多的是编译器编写者从合理的选项菜单中进行选择,而不是随意挑选数字。但是实现总是可以自由地做它想做的任何事情。如果您想为x86编写一个编译器,用9位字节和3字节字模拟机器,那么C标准允许这样做。但就操作系统而言,您只能靠自己。
这篇关于以c为单位的数据类型的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文