在表达式中执行增量的问题

时间:2019-05-11 11:34:29

标签: c

当我编译这段代码时,它显示为左值的错误作为增量操作数

int main(void)
{
 int x,y,z;
 x=8++;
 y=++x++;
 z=(x+y)--;
 printf("x=%d,y=%d,z=%d",x,y,z;
 return 0;
}

2 个答案:

答案 0 :(得分:2)

当您写something++++something时,它大致等同于

something = something + 1

something++++something之间的区别在于将结果分配给其他对象后得到的结果。)

因此,++的操作数必须是您可以分配的内容。

8++等同于8 = 8 + 1,但您不能分配一个数字。

++x++等同于(x = x + 1) = (x = x + 1) + 1之类的东西,我什至无法理解其意图。

(x+y)--等效于(x + y) = (x + y) - 1。您不能分配给加法表达式(您要设置哪个变量)?

仅在实际要更新变量时才应使用++--。它不是+ 1- 1的一般替代品。因此,您的程序应为:

x = 8 + 1;
y = 1 + x + 1;
z = (x + y) - 1;

这将打印

x = 9, y = 11, z = 19

答案 1 :(得分:0)

常量不能更改。 8是一个常数。 (x+y)也不是可以递增并存储在某处的值。

x++使用x的值,然后递增x。因此,左值本身不仅会更改操作的结果。

正确是

z=(x+y)-1;
x=8+1;