常量和文字之间的混淆?

1 c++ constants literals

我目前正在TutorialsPoint上阅读有关c ++教程的常量,内容如下:

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

我真的不明白这一点。如果常量称为文字,而文字是直接在代码中表示的数据,那么如何将常量视为文字?我的意思是,以const关键字开头的变量是常量,但它们不是文字,那么如何说常量是文字?

Mal*_*wal 8

我不同意这样的说法:“...C 中最初没有一个叫做 const 的东西,所以这很好。” const 实际上是 32 个 C 关键字之一。谷歌看看。休息完后,我认为这个人在 TP 错过了一些东西。为了公平地对待教程点的他们,他们有一篇文章解释了这种差异(完整引用,逐字): https://www.tutorialspoint.com/questions/category/Cplusplus

文字是表示为自身的值。例如,数字 25 或字符串“Hello World”都是文字。

常量是一种替代文字的数据类型。当在程序中多次使用特定的、不变的值时,将使用常量。例如,如果您有一个名为 PI 的常量,您将在程序中的各个位置使用该常量来查找圆的面积、周长等,那么这是一个常量,因为您将重用它的值。但是当你将其声明为:

常量浮点 PI = 3.141;

3.141 是您正在使用的文字。它没有自己的任何内存地址,只是位于源代码中。

请不要贬低那些做你所谓的“随机教程”的人。来自贫困家庭和欠发达国家的孩子买不起“好的C++教科书”,例如Scott Myers的Effective C++,他们可以拥有这些在线免费教程,并且大多数这些教程比“好书”解释得更好。无论如何,请阅读它们。有些人感到困惑,然后到 StackOveflow 或 Quora 来消除你的困惑。祝各位编码愉快。


小智 6

这里:

 const int MEANING = 42;
Run Code Online (Sandbox Code Playgroud)

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

 int n = 42;
Run Code Online (Sandbox Code Playgroud)

这里n不是常数,但42仍然是文字。

主要区别在于常量可能在内存中有一个地址(如果您编写一些需要此地址的代码),而文字则永远没有地址。

  • *“而文字永远没有地址” *文字C-String怎么样? (4认同)

Lig*_*ica 5

这篇文章的作者很困惑,并将这种困惑传播给其他人(包括你)。

在 C 语言中,文字是“常量”。C 中最初并没有所谓的东西,const所以这很好。

C++ 是一种不同的语言。在C++中,文字被称为“literals”,“constant”有一些含义,但通常是一个const东西。这两个概念是不同的(尽管两种事物在初始创建后都无法变异)。我们还有编译时常量,通过constexpr它又是另一回事了。

一般来说,阅读一本好书,而不是随机者在互联网上编写的随机教程!