const变量悖论

roo*_*kie 2 c++ programming-languages const

如果我在c ++上有一些表达式:

const int x = 3;
Run Code Online (Sandbox Code Playgroud)

我可以说x是变量吗?这似乎很奇怪因为x不可变因为我无法改变它,感谢提前任何扩展

编辑 PS感谢所有的答案,我理解根据C++的定义,我的问题的答案可能是肯定的,你知道其他一些语言,其中我的问题的答案是否定的?

Jam*_*lis 5

是. x是一个变量,即使你不能(合法地)改变它的价值.

实际上,在C++中,具有名称的对象是"变量".

  • @Ken:`aVar`不是变量,因为它不是命名对象(它是宏的名称).`const int`确实是一个对象,可以用作对象(例如,你可以使用它的地址).C++标准规定:"变量是由对象的声明引入的.变量的名称表示对象"(3/4).你当然可以不同意"变量"这个词的含义,但在C++中它有一个特定的含义(从技术上讲,意义在C++ 0x中有所改变,所以大多数引用也可以正确地称为变量). (5认同)
  • 我不得不反对(虽然没有投票).常数不是变量; 它是一个常量,"任何具有名称的对象"也是不正确的(int常量不是对象).;-)根据你的逻辑,#DEFINE也是一个变量,因为我可以#DEFINE aVar,给它一个名字(aVar). (2认同)