为什么左值需要作为增量操作数错误?
为什么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”。