c语言等号赋值问题(大一)

=号赋值是从右向左,那(a=4)*(a=3)为什么最终赋值出来是a=3?是因为加了括号吗?

你说的从右至左是在a=b=c=3这种情况下,先执行c=3。而不是(a=4)*(a=3)这种情况

代码(a=4)*(a=3)的行为是未定义的,因此C/C++语言标准没有定义运算符操作数的计算顺序,编译器可以按任意顺序来计算运算符的操作数。因此上述代码对a赋值4和对a赋值3的顺序是不确定的,不同编译器得到的结果不一样。

参考
https://en.cppreference.com/w/c/language/eval_order