【发布时间】:2014-11-30 12:08:26
【问题描述】:
我只是想知道是否有人知道编译器是否将按位 AND 和 OR 以及对常量进行的按位移位预先计算为常量值。
例如int Foo = Bar / ( 1 << 12 )
我这样做而不是 Bar >> 12 的原因是,如果 Bar 是负值,它会下降到 -1 而不是零。
【问题讨论】:
-
任何体面的编译器都可以在编译期间计算常量表达式(即仅包含常量值的表达式)作为优化。不仅是按位表达式,还有其他表达式。
标签: c++ variables bit-manipulation constants