我知道,正确移位负签名类型取决于实现,但是如果我执行左移怎么办?例如:
int i = -1; i << 1;
这个定义明确吗?
我认为该标准没有说明带有签名类型的负值
如果E1具有带符号类型和非负值,并且E1×2 E2在结果类型中可表示,那么这就是结果值; 否则,行为未定义.
它只阐明如果结果在签名类型中无法表示,则行为未定义.
c++ bit-shift undefined-behavior
bit-shift ×1
c++ ×1
undefined-behavior ×1