为什么左值作为递增操作数错误?

Rag*_*gav 0 c increment lvalue decrement operand

为什么lvalue需要作为增量操作数Error a = b +(++ c ++);

只想同时将'b +(c + 1)'分配给'a'并将'C'增加2.

我是一个初学者只是想要澄清什么是"LVALUE ERROR"实际上是什么?

main()
{

int a=1,b=5,c=3;

a=b+(++c++);  

printf("a=%d   b= %d   c= %d \n",a,b,c);
}
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 7

后缀增量绑定比前缀增量更紧,所以你想要的是:

a = b + (++c)++;
Run Code Online (Sandbox Code Playgroud)

但这不是合法的C,因为前缀增量的结果(如示例中的后缀增量的结果)不是左值.这意味着它只是一个价值; 它不再引用像'c'这样的特定对象,所以试图改变它是没有意义的.它没有可见的效果,因为没有对象会被更新.

就我个人而言,我认为在两个陈述中这样做在任何情况下都更清楚.

a = b + c + 1;
c += 2;
Run Code Online (Sandbox Code Playgroud)