我尝试了以下代码:
int a = ++2;
我知道常量不能被修改,但我无法理解编译器输出的错误:
* error: lvalue required as increment operand
究竟是什么意思?
答案 0 :(得分:4)
表达式被认为是"左值"当它在内存中指定一个可修改的位置时。修改值的运算符要求它们的操作数是左值。
作业运算符要求左侧是左值。这就是这个行话的起源。后缀和前缀增量/减量运算符对它们的单个操作数也有这个要求。
左值表达式可能不仅仅是变量名,还可能是更复杂的表达式,例如:
*(p + 2); // the unary * operator produces an lvalue
*(p + 2) = 5; // so that this is possible
(*(p + 2))++; // or this
答案 1 :(得分:0)
这到底是什么意思
++
是递增运算符(递增运算符)2
是增量运算符,它不是左值。