常量和文字之间的混淆?

新手上路,请多包涵

我目前正在阅读来自 TutorialsPoint 的 c++ 教程中的常量,它说:

常量是指程序可能不会改变的固定值,它们被称为文字。 ( 来源

我真的不明白这一点。如果常量被称为字面量,而字面量是代码中直接表示的数据,那么常量怎么能被认为是字面量呢?我的意思是 const 关键字前面的变量是常量,但它们不是文字,那么你怎么能说常量是文字呢?

原文由 user8137991 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 692
2 个回答

如果常量被称为字面量,而字面量是代码中直接表示的数据,那么常量怎么能被认为是字面量呢?

您引用的那篇文章将“常量”一词 定义 为“字面”的同义词。后者是 C++ 标准对其所描述内容的术语。前者是 C 标准用于相同概念的内容。

我的意思是 const 关键字前面的变量是常量,但它们不是文字,那么你怎么能说常量是文字呢?

在那里,您为“常数”一词提供了另一种定义,您是对的,它与另一个不一致。就这样。 TP 使用的术语定义与您习惯使用的定义不同。

实际上,尽管“常量”的名词用法出现在 C++ 标准中定义的术语“空指针常量”之外的几个地方,显然与您在此处提出的含义相同,我没有找到该术语的实际定义,尤其是没有一个匹配你的。实际上,您的定义不如 TutorialPoint 的合理,因为具有 const 限定类型的表达式仍然可以指定一个可修改的对象(通过不同的表达式)。

原文由 John Bollinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

这里:

  const int MEANING = 42;

值 MEANING 是一个常量, 42 是一个文字。这两个术语之间没有真正的关系,如下所示:

  int n = 42;

其中 n 不是常数,但 42 仍然是文字。

主要区别在于常量可能在内存中具有地址(如果您编写一些需要这样的地址的代码),而文字从来没有地址。

原文由 user2100815 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题