繁体   English   中英

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

[英]error: lvalue required as increment operand

我尝试了以下代码:

int a = ++2;

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

*  error: lvalue required as increment operand 

究竟是什么意思?

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

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

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

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

它的确切意思是

  1. ++根据定义是递增运算符递增的运算符)
  2. 它操作的东西叫做增量操作数
  3. 这个东西需要是一个左值(相当于一个指针的东西)
  4. 在这种情况下2增量运算符,它不是左值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM