整数提升

科技半导体

C++位运算在布尔值和枚举类型上的反直觉行为引发关注

C++中对布尔值进行按位取反操作会产生令人困惑的结果。根据C++标准([conv.bool]),转换到bool类型时,零值转为false,非零值转为true。当对true执行按位取反操作时,true首先被提升为int类型(值为1),其补码为-2,再转换回bool后仍为true。这种反直觉的现象源于整数提升的强制性——…