关于左值
文章摘要
GPT 4
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结
投诉关于左值
一般来说,当你看到这样的报错时
1 | [Error] lvalue required as left operand of assignment |
就是左值概念不清晰的原因啦
首先我们引用一下c99的官方文档
1 | The name "lvalue" comes originally from the assignment expression E1 = E2, in which the left operand E1 is required to be a (modifiable) lvalue. It is perhaps better considered as representing an object "locator value". What is sometimes called "rvalue" is in this International Standard described as the "value of an expression". |
当然,装装样子而已啦,还是用汉语叙述:
左值也就是lvalue,更加合理的解释应该是locator value(特定位置的值),rvalue则应该理解为value of an expression(表达式的值)
以下面的代码为例:
1 | #include <stdio.h> |
这段代码是会报错的
如果你认为左值只是赋值运算左边的值,这个错误就无法理解了
正确的理解是:
1 | (a++) 是先将变量 a 的值(5)做为整个表达式的值返回,再将 a 自增 1(类似于 a = a + 1)。 |
++的作用对象需要是一个用于识别或定位储存位置的表示符(lvalue)
省流
C 语言的术语 lvalue 指用于识别或定位一个存储位置的标识符。(注意:左值同时还必须是可改变的)
其实 rvalue 的发明完全是为了搭配 lvalue,rvalue 你可以理解为 readable value,即任何可读取的值都被认为是右值(非左值)。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自DaoXuan
评论 ()