【发布时间】:2020-01-03 03:06:01
【问题描述】:
我听说过使用指针时出现的术语 lvalue 和 rvalue。
但是,我并不完全理解它们的含义。
什么是左值和右值?
注 1:这是关于 C 的左值和右值的问题,而不是 C++ 的问题。这也是关于它们的功能,而不是它们的命名。
注2:我已经完全理解了这些概念。这是一个规范的重复目标。
【问题讨论】:
-
C11 标准草案的第 6.3.2.1 节涵盖了这一点。
-
@JL2210 我暗中怀疑可能是这种情况,但我认为无论如何扔掉它也无妨。
-
@AnttiHaapala 奇怪的是,第 6.3.2.1 节从未使用过“右值”一词,但在 C11 标准草案的索引中,确实出现了“右值”一词,并指出了你到那个部分。编辑:实际上,脚注 64 确实提到了“右值”
-
@ChristianGibbons 这是一个脚注:名称“左值”最初来自赋值表达式 E1 = E2,其中左操作数 E1 必须是(可修改的)左值。将其视为表示对象“定位器值”可能更好。有时被称为“右值”的东西在本国际标准中被描述为“表达式的值”。
-
“右值”是一个无意义的范畴,因为所有左值,如果它们指定一个对象,都可以进行左值转换并成为“右值”。