C语言赋值运算符的结合方向是自右向左吗?

2024-12-21 11:33:29
推荐回答(4个)
回答1:

赋值运算符是自右向左结合的。
以如下代码为例:
int a = 1,b=2,c=3;
a=b=c;
printf("%d,%d,%d\n", a,b,c);

如果赋值运算为自左向右,那么执行顺序为
a = b = 2;
b = c = 3;
结果a = 2, b=3, c = 3。
将输出2,3,3

如果赋值运算为自右向左,那么执行顺序为
b = c = 3;
a = b = 3;
结果a = 3, b=3, c = 3。
将输出3,3,3

通过实际运行,结果为3,3,3。说明结合方向是自右向左的。

回答2:

你看你的运算表达式:a-=a*=a;
先看第一步:
a*=a 根据你的表示方式那么这么计算就是a=a*a; 那么结果就是144

第二步
a-=a;
这个时候a的值就是144,这个144就是第一个步骤的结果,那么这样一来
a-=a;就相当于a=a-a; 那么输出的结果就是0 了

回答3:

是的,先执行a*=a,此时 a=144,在执行a-=a; a=0

回答4:

不img却