C语言问题,关于()

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:17:39
#include<iostream.h>
void main()
{
int x=15;
cout<<(x+5-(x=10)+x*2)<<endl;
}

输出30
我想问的是,C中不是()优先级最高吗?为什么不先做赋值运算x=10呢?

计算是从左到右,然后才是从里到外(由括号决定)的。
所以首先x+5 = 20 - (x = 10) = 10 + x*2 = 10 + 10*2 = 30

应该是运算次序是从左到右导致的

第一步计算x+5 =>20-(x=10)+x*2
第二步计算x=10 =>20-10+x*2
第二步计算x*2 =>10+10*2 =>30