错误:需要左值作为递增操作数

时间:2016-05-26 12:36:21

标签: c lvalue

我尝试了以下代码:

int a = ++2;

我知道常量不能被修改,但我无法理解编译器输出的错误:

*  error: lvalue required as increment operand 

究竟是什么意思?

2 个答案:

答案 0 :(得分:4)

表达式被认为是"左值"当它在内存中指定一个可修改的位置时。修改值的运算符要求它们的操作数是左值。

作业运算符要求左侧是左值。这就是这个行话的起源。后缀和前缀增量/减量运算符对它们的单个操作数也有这个要求。

左值表达式可能不仅仅是变量名,还可能是更复杂的表达式,例如:

*(p + 2); // the unary * operator produces an lvalue
*(p + 2) = 5; // so that this is possible
(*(p + 2))++; // or this

答案 1 :(得分:0)

这到底是什么意思

    根据定义,
  1. ++递增运算符(递增运算符)
  2. 其操作的对象称为增量操作数
  3. 该东西必须是左值(相当于指针)
  4. 在这种情况下,2增量运算符,它不是左值