C运算符的优先级
Precedence of C operators
我是编程新手,刚开始学习C。我想了解以下运算符的优先级
if ( p == 2 || p % 2 )
请帮助我。
这里
if ( p == 2 || p % 2 )
看起来像
if( operand1 || operand2)
其中 operand1
是 p == 2
,operand2
是 P % 2
。现在逻辑或 ||
真理 table 是
operand1 operand2 operand1 || operand2
0 0 0
0 1 1
1 0 1
1 1 1
从上面的table可以看出,如果第一个操作数operand1
结果为真那么结果永远为真&第二个操作数operand2
没有得到评估。
operand1
是 ==>
p == 2
(假设 p
是 2
)
2 == 2
结果为真,因此 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
参考Precedence Of Operators and .
优先级:运算符优先级决定了当有多个运算符且它们具有不同的优先级时,运算符和操作数在表达式中如何分组。
结合性:当两个相同优先级的运算符出现在一个表达式中时,使用运算符结合性。
由于存在||
,所以需要先对||
的左边求值,以决定是否需要对||
的右边进行处理。
如果 p == 2
returns 为真,p % 2
将不会被计算。
因此p == 2
会先执行,然后是p % 2
(因为%
的优先级高于||
)。
然后将根据 ||
.
评估这 2 个的结果
我是编程新手,刚开始学习C。我想了解以下运算符的优先级
if ( p == 2 || p % 2 )
请帮助我。
这里
if ( p == 2 || p % 2 )
看起来像
if( operand1 || operand2)
其中 operand1
是 p == 2
,operand2
是 P % 2
。现在逻辑或 ||
真理 table 是
operand1 operand2 operand1 || operand2
0 0 0
0 1 1
1 0 1
1 1 1
从上面的table可以看出,如果第一个操作数operand1
结果为真那么结果永远为真&第二个操作数operand2
没有得到评估。
operand1
是 ==>
p == 2
(假设p
是2
)2 == 2
结果为真,因此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
参考Precedence Of Operators and
优先级:运算符优先级决定了当有多个运算符且它们具有不同的优先级时,运算符和操作数在表达式中如何分组。
结合性:当两个相同优先级的运算符出现在一个表达式中时,使用运算符结合性。
由于存在||
,所以需要先对||
的左边求值,以决定是否需要对||
的右边进行处理。
如果 p == 2
returns 为真,p % 2
将不会被计算。
因此p == 2
会先执行,然后是p % 2
(因为%
的优先级高于||
)。
然后将根据 ||
.