我是编程的新手,我已经开始学习C语言。在下面,我想学习运算符的优先级
if ( p == 2 || p % 2 )
请帮助我。
if ( p == 2 || p % 2 )
看起来像
if( operand1 || operand2)
其中operand1
为p == 2
,operand2
为P % 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
(假设p
为2
)- [
2 == 2
的结果为true,因此operand2
不会得到求值,if
块看起来像]
if(true) { }
[假设
p
为3
,然后为operand1
,即2 == 3
为假,即operand2
得到评估,即3%2
,即1
,这意味着if
块看起来像]
if(true) { }
[假设p
为4
,然后为operand1
,即2 == 4
为假,即operand2
得到评估,即4%2
,即0
,这意味着if
块看起来像]
if(false) { }
希望以上说明对您有意义。关于关联性和优先级,请查看manual page of operator
[%
具有最高优先级,因此p % 2
将首先被评估。
[==
具有次高的优先级,因此p == 2
将在下一个求值。
最后,两个结果的||
将在if
条件下评估。
[优先级:运算符优先级确定在具有多个优先级不同的多个运算符的表达式中,首先执行哪个运算符。
关联性:运算符关联性在两个优先级相同的运算符出现在表达式中时使用。