例如,实现可以定义sizeof(signed int)为两个字节并sizeof(unsigned int)为四个字节吗?在C / C ++ 参考中,我找不到任何明确禁止此操作的东西,尽管有符号和无符号版本类型的最小大小是相对应的,并且我看不出任何逻辑上的原因,即它们的大小应该不同。
有符号整数类型的大小可以与C / C ++中其对应的无符号类型的大小不同吗?
否。对于C,int并且unsigned具有相同的大小。自信的C ++继承了相同的规范。
对于每种有符号整数类型,都有一个对应的(但不同的)无符号整数类型(用关键字指定
unsigned),该类型使用相同的存储量(包括符号信息)并且具有相同的对齐要求。
C11dr§6.2.56