c++ - 是否在编译时评估 C++ 中对文字的算术运算?

标签 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) );

最佳答案

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

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

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

关于c++ - 是否在编译时评估 C++ 中对文字的算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48851954/

相关文章:

c++ - hash_map 在 C++ STL 中崩溃

c++ - OpenCV 与 cv::FAST 有问题

c++ - Valgrind 和滥用 new[]?

c++ - static_cast<const A>(*this) 和 static_cast<const A&>(*this) 的区别

c++ - 使用 boost::thread 将 const 指针参数传递给函数

c++ - 我如何在框架中找到 argc 的地址?

C++双指针数组列表

c++ - 如何从 qt-everywhere-opensource-src-5.6.1.tar.gz(或更高版本)构建 Qt 5.6.1 *.dll 文件?

c++ - 制作一个指向两个函数的 std::function c++

安卓 NDK 调试库