C运 算符的优先级

问题描述 投票:0回答:2

我是编程的新手,我已经开始学习C语言。在下面,我想学习运算符的优先级

if ( p == 2 || p % 2 )

请帮助我。

c operator-precedence
2个回答
-2
投票
这里

if ( p == 2 || p % 2 )

看起来像

if( operand1 || operand2)

其中operand1p == 2operand2P % 2。现在,逻辑OR ||真值表是

operand1 operand2 operand1 || operand2 0 0 0 0 1 1 1 0 1 1 1 1

从上表中可以清楚地看出,如果第一个操作数operand1的结果为true 

然后结果将始终为true&第二个操作数operand2 不会得到评估。

operand1是==>

  • p == 2(假设p2
  • [2 == 2的结果为true,因此operand2不会得到求值,if块看起来像]

    if(true) { }

[假设p3,然后为operand1,即2 == 3为假,即operand2得到评估,即3%2,即1,这意味着if块看起来像]

if(true) { }

[假设p4,然后为operand1,即2 == 4为假,即operand2得到评估,即4%2,即0,这意味着if块看起来像]

if(false) { }

希望以上说明对您有意义。

关于关联性和优先级,请查看manual page of operator


-1
投票
请参阅Precedence Of Operators

[%具有最高优先级,因此p % 2将首先被评估。

[==具有次高的优先级,因此p == 2将在下一个求值。

最后,两个结果的||将在if条件下评估。

[优先级:运算符优先级确定在具有多个优先级不同的多个运算符的表达式中,首先执行哪个运算符。

关联性:运算符关联性在两个优先级相同的运算符出现在表达式中时使用。

© www.soinside.com 2019 - 2024. All rights reserved.