C语言规范是否保证short类型大小始终是char类型的两倍?
C语言规范是否保证short类型大小始终为char类型的两倍?
C语言规范没有作出该强制保证。
目前C标准对内置整数数据类型仅作出以下明确约束:
char大小不小于8位short大小不小于16位short大小不小于char
从实际应用的常见实现来看,short的大小通常是char的两倍,但这只是主流平台的实现选择,并非标准强制要求。比如16位char和16位short共存的实现,是完全符合C标准要求的合法场景,这种情况下二者大小相等,并不满足两倍的比值关系。
如果实际开发中需要使用位宽确定的整数类型,优先选择stdint.h头文件中定义的定宽整数类型即可规避相关兼容性问题。
2021年5月6日更新: 本问题核心讨论的是
char与short的大小比值关系,和两类数据类型的实际位宽没有关联,和讨论char位宽的问题不属于同一范畴。
内容的提问来源于stack exchange,提问作者Alex Riveron
相关产品推荐
相关产品推荐

