在C++中默认预先计算'const'变量吗?

Gun*_*nar 4 c++

假设我有类似位置的变量

const float latitude = 51.+11./60.+33.0461/3600.;
const float longitude = 12.+50./60.+31.9369/3600.;
Run Code Online (Sandbox Code Playgroud)

并在程序中经常使用它们.编译器是否预先计算了?(这个例子不应该产生很多开销,但你明白了.)

指出位置的奖励点.;)

TIA

Jam*_*lis 8

我不认为编译器通常需要计算算术常量表达式的结果.

编译器,然而,需要以计算的结果积分常量表达式(基本上,只的整数,并转换为整数的其他值组成的恒定表达)在情况下,它需要的结果-即,当整数表达式用作数组大小,case表达式,枚举值等.

但是,如果任何现代编译器没有计算常量表达式的结果,我会感到惊讶.

  • 值得指出的是,"常量表达式"并不是指`const`变量,只是一个包含文字数而不是变量的表达式.对于编译器来说,变量是否为"const"并不重要,它将以任一方式预先计算该值 (5认同)