C语言中赋值和自增同时参与运算的优先级如何确定?

n = 1;
m = (n = 2)* ++n;
cout << "m = "<< m << ", n = "<< n << endl;
用VS2015,输出,m = 9,n = 3,怎么解释这个结果呀?关键是 n=2的赋值返回值应该是2,为何会出现9这个结果呢?

赋值优先级最低,但括号优先级最高,先做括号里面的赋值,然后处理前缀自增运算,下面是处理乘法,最后处理最左边的赋值。追问

不过问题是,(n = 2)的赋值结果应该是2,但是看输出的结果是9,所以这里的(n = 2)赋值结果是3。难道++n会影响(n = 2)的计算?

温馨提示:答案为网友推荐,仅供参考
相似回答