本文介绍了为什么低precedence运营商执行的第一?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

可能重复:结果
  

我们知道,是不是逻辑更大逻辑与(&放大器;&放)和precedence,大于逻辑或( || )。

we know that precedence of prefix is greater than "LOGICAL AND" (&&) and precedence of "LOGICAL AND" is greater than "LOGICAL OR" (||).

似乎违背了它:

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;
}

如果的 ++ precedence超过&放大器;&安培; || 那么所有的preFIX应首先执行。这个之后我= -2,J = 3,K = 1 然后&放大器;&安培; 将首先执行。
为什么输出显示: -2 2 0 1

If precedence of ++ is more than && and || then all prefix should execute first. After this i=-2,j=3,k=1 and then && will execute first.why output shows : -2 2 0 1 ?

该计划的行为也是在Ubuntu v12.04一样的。

The behavior of the program is also same on ubuntu v12.04.

推荐答案

&放大器;&安培; || 运营商短路。也就是说,如果左边的值是假的&放大器;&安培; 或TRUE为 || 则前不执行右边pression(因为它并不需要确定整个前pression的值)。

The && and || operators are "short-circuiting". That is, if the value on the left is FALSE for && or TRUE for || then the expression on the right is not executed (since it's not needed to determine the value of the overall expression).

这篇关于为什么低precedence运营商执行的第一?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 07:04