首页 > 解决方案 > 编译器在编译 C++ 时是否用其值替换常量变量

问题描述

处理器每次使用时都必须从内存中获取常量变量的值。但是如果常量变量不能改变,编译器可以用它们的值替换它们,不是吗。

标签: c++variablesmemory

解决方案


这取决于,因为有两种类型的常量:

  1. 编译时常量(const在编译时初始化的变量或constexpr变量)。
  2. 运行时常量(类似于标记为 的参数const)。

对于第一种类型(编译时常量),编译器确实可以用实际值“替换”变量,这就是所有主要编译器都会做的事情。

对于第二种类型,这是不可能的,因为直到运行时才知道这些值。


推荐阅读