C99标准下对象大小边界行为及size_t相关技术疑问
关于C99 §6.5.3.3的确认
若提升后的类型是无符号类型,则表达式~E等价于该类型可表示的最大值减去E。
该最大值始终为2^n-1,是一个奇数。
解答
完全正确。对于任意n位的无符号类型,其可表示的最大值为2^n - 1,二进制形式为全1,必然是奇数。
举例验证:
- 8位无符号
char:最大值为2^8 - 1 = 255(奇数) - 32位无符号
size_t:最大值为2^32 - 1 = 4294967295(奇数)
因此当提升后的类型为无符号类型时,~E的运算结果等价于该类型的最大值减去E,这个最大值确实始终是奇数。
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

