Tag: one complement

按位运算符可以有未定义的行为吗?

按位运算符( ~ , & , |和^ )对其提升的操作数的按位表示进行操作。 这样的操作会导致不确定的行为吗? 例如, ~运算符在C标准中以这种方式定义: 6.5.3.3一元算术运算符 ~运算符的结果是其(提升的)操作数的按位补码(也就是说,当且仅当未设置转换的操作数中的相应位时,才设置结果中的每个位)。 整数提升在操作数上执行,结果具有提升类型。 如果提升类型是无符号类型,则表达式~E等于该类型中可表示的最大值减去E 在所有体系结构中, ~0产生一个位模式,符号位设置为1 ,所有值位设置为1 。 在一个补码架构上,该表示对应于负零。 这个位模式可以成为陷阱表示吗? 是否存在涉及更常见架构的简单位运算符的未定义行为的其他示例?