可能重复:
运算符优先级问题
我们知道前缀的优先级大于“逻辑与”(&&
),“逻辑与”的优先级大于“逻辑或”(||
)。
下面的程序似乎违反了它:
int main()
{
int i=-3,j=2,k=0,m;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);
return 0;
}
如果优先级++
大于&&
,||
则所有前缀都应首先执行。在此之后i=-2,j=3,k=1
,然后&&
将首先执行。为什么输出显示:-2 2 0 1
?
该程序的行为在 ubuntu v12.04 上也是相同的。