C语言-&和|的优先级顺序简析

编程语言及工具

105人已加入

描述

通常情况下,像>,<和==这类的比较运算符的优先级要低于计算运算符。所以下面的两段代码是一样的:

代码1:

 

if (a > b + c)
{
    //…
}

 

代码2:

 

if (a > (b + c))
{
    //…
}

 

但是,如果有&和|参与的运算就要注意了,下面的代码3写法未必是你想的那样,其实际运算顺序是代码4那样的。

代码3:

 

if (a & mask == b)
{
    //…
}

 

代码4:

 

if (a & (mask == b))
{
    //…
}

 

是不是有点奇怪呀,这是因为&和|这两个运算符的优先级低于>,<和==这类的比较运算符的优先级

注:实际编程过程中,如果实在不清楚运算符的具体优先级关系,那么最好的保障就是在合适的地方添加上括号

比如代码3,我们应该加上括号,也就是像代码5那样,才是我们想要的运算顺序:

代码5:

 

if ((a & mask) == b)
{
    //…
}





审核编辑:刘清

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分