我只是想知道是否有人知道编译器是否将按位 AND 和 OR 以及对常量进行的按位移位预先计算为常量值。
例如int Foo = Bar / ( 1 << 12 )
int Foo = Bar / ( 1 << 12 )
我这样做的原因Bar >> 12是,如果 Bar 是负值,它会下降到 -1 而不是零。
Bar >> 12
c++ variables bit-manipulation constants
bit-manipulation ×1
c++ ×1
constants ×1
variables ×1