C语言的与运算符

Python012

C语言的与运算符,第1张

这是个优先级的问题

运算符的特点就是:只要有一个为零,逻辑值就为零;如果前一个表达式逻辑值是零,那么后面的表达式就不执行。

例如LZ说的这道题,++a>0 逻辑值是零,整个表达式的即为零。所以后面的 b-- 就不执行了,即b的值不变。

学C语言这些运算符的优先级要搞清楚,看着很简单,一马虎可是要出错的哦

与>或 ,更细一点是:!  --->&--->^ --->| --->&&--->||。C语言中的运算优先级和算数优先级一样,只要把运算符的优先级记住就可以了。

经过n遍的调试,证明:||和&&优先级相等,且都是从左往右运算;在出现||和&&的语句中,并不对a++进行运算,只判断它的初值。当然,这条语句结束后,涉及判断的表达式就会进行相应的运算(如:a++)。

在&&运算中,如果&&前面的逻辑值为0(如:令a=0;a++&&b++,此时,a还没有进行++运算,仍为0。但是在本语句结束后就自加1),则结束本语句;如果&&前面的逻辑值为1,则继续判断&&后面的值是否为1,如果为1,则继续判断后面的逻辑运算;如果为0,而结束本语句。

优先级

优先级与求值顺序无关。如a+b &&b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

基本的优先级需要记住:

指针最优,单目运算优于双目运算。如正负号。

先算术运算,后移位运算,最后位运算。请特别注意:1逻辑运算最后结合。

以上内容参考:百度百科-运算符优先级