C编程整数大小限制

时间:2014-05-24 17:16:31

标签: c compiler-construction integer int platform

我是一名学生,目前通过一本名为" C Primer Plus,第5版"的书来学习C编程语言。我正在学习它,因为我正致力于嵌入式系统和设备的编程,设备驱动程序,低级别的东西等等。我的问题非常简单,但我还没有从教科书中获得直接的答案。来自SO的各种帖子与我的问题相似。

如何确定整数数据类型的大小,如SHORT,INT或LONG?我知道这是一个很常见的问题,但每个人似乎都回答了这个问题"取决于架构/编译器",这让我一无所知,并没有帮助像我这样的人谁是新手。

互联网上是否有一个隐藏的图表可以清楚地描述这些不兼容性,或者是否有一些查看编译器(16位,24位,32位,64位等)的数值方法能够分辨出数据类型是什么?或者手动使用sizeof运算符和特定系统上的编译器来判断这些数据类型将保留的唯一方法?

2 个答案:

答案 0 :(得分:4)

您只需要正确的文档,在您的情况下,您需要定义标准的文档,并且在询问此类问题时应至少指定其中的一个版本;例如,C99是该语言最受欢迎的版本之一,它在ISO-IEC 9899-1999文档中定义。

C标准没有以绝对值来定义大小,它以字节表示的最小大小更多,有时甚至不是。

值得注意的例外是char,这是一种保证大小为1字节的类型,但这里是另一个潜在的陷阱,C标准并没有定义一个字节有多大是的,所以它说char是1个字节,但是在不知道你的平台的情况下你无法肯定地说出任何内容。

您始终需要了解标准版和平台版,如果您想以编程方式执行此操作,则会为您的平台提供带有宏的limits.h标题。

答案 1 :(得分:1)

您正在寻找limits.h。它定义了各种宏,例如INT_MAX(类型int的最大值)或CHAR_BITchar中的位数)。您可以使用这些值来计算每种类型的大小。