为什么左值需要作为增量操作数错误?

为什么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=%db= %dc= %d \n",a,b,c); } 

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

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

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

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

 a = b + c + 1; c += 2; 

LVALUE意味着没有应该执行操作的变量。

C文件基本上只是文本文件,需要特定的格式,因此编译器可以理解它。

编写类似++ Variable ++的东西对于编译器来说完全是胡说八道。

您基本上可以将++ c想象为:

 Var += 1; return Var; 

而c ++是:

 int Buf = Var; Var += 1; return Buf; 

要“修复”你的代码:

 void main() { int a=1,b=5,c=3; a = b + (++c); //Equals 5 + 4 printf("a=%db= %dc= %d \n",a,b, ++c); //a = 9, b = 5, c = 5 } 

通过这种方式,您可以获得所需的结果,而无需编译器抱怨。

请记住,在组合操作中使用++ c或c ++时,顺序很重要。 使用++ c时,操作中将使用较高的值,使用c ++时,它将使用旧值操作。

这意味着:

 int a, c = 5; a = 5 + ++c; //a = 11 

 int a, c = 5; a = 5 + c++; //a = 10 

因为在后一种情况下,c在将其添加到5并存储在a中之后将仅为“6”。