在编译时是否对C ++中的文字进行算术运算?

时间:2018-02-18 13:00:27

标签: c++

此处,类似的问题被问到C#

Are arithmetic operations on literals in C# evaluated at compile time?

java

Are arithmetic operations on literals calculated at compile time or run time?

考虑到C ++,是否会在运行或编译时评估以下计算?第一个是定义内置类型,第二个是函数参数。

然而,请考虑它们用于所有4种基本算术运算以及其他内置类型,例如: int代替double以下。

  • double testDouble = 2.0 + 2.0;
  • aUserDefinedType testUserDefinedTypeObject ( aMemberVariable*std::pow(someOtherVariable, 1.0/8.0) );

1 个答案:

答案 0 :(得分:5)

在构建代码时,这取决于您的编译器及其优化级别。

编译时评估没有内在的保证,但是大多数编译器将在编译时打开优化时评估常量表达式。

还有constexpr也可以帮助编译器知道在编译时可以评估什么。