C标准是否保证sizeof(int)与sizeof(unsigned int)大小相等?
关于
sizeof(int)与sizeof(unsigned int)的标准保证 你的判断是错误的,C标准明确保证了sizeof(int)等于sizeof(unsigned int)。
- C标准(包括C11、C17等版本)在类型定义章节中规定:每一种有符号整数类型,都对应一个同名称的无符号类型(通过
unsigned关键字修饰),二者使用完全相同的存储空间和对齐要求。int对应的无符号类型就是unsigned int,因此它们的sizeof计算结果必然相等。 - 标准对这两个类型的取值范围仅做了最低要求:
int至少能表示[-32767, 32767],unsigned int至少能表示[0, 65535],但并未允许它们在存储大小上存在差异——无符号类型本质是将有符号类型的符号位作为值位使用,总存储空间的大小保持一致。 - 那些假设
sizeof(int) == sizeof(unsigned int)的程序,其实是符合C标准规范的,不会因平台差异导致该等式失效。
内容的提问来源于stack exchange,提问作者0___________
相关产品推荐
相关产品推荐

