[英]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
它的确切意思是
++
根据定义是递增运算符(递增的运算符)2
是增量运算符,它不是左值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.