逻辑运算的结果与优先级分析
在编程中,我们一样平常将零值称为“假”,将非零值称为“真”。逻辑运算的功效也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。
1) 与运算(&&)
参加运算的两个表达式都为真时,功效才为真,不然为假。譬喻:
5&&0 5为真,0为假,相与的功效为假,也就是 0。(5>0) && (4>2) 5>0 的功效是1,为真,4>2功效是1,也为真,以是相与的功效为真,也就是1。 2) 或运算(||) 参加运算的两个表达式只要有一个为真,功效就为真;两个表达式都为假时功效才为假。譬喻:10 || 0 10为真,0为假,相或的功效为真,也就是 1。(5>0) || (5>8) 5>0 的功效是1,为真,5>8 的功效是0,为假,以是相或的功效为真,也就是1。 3) 非运算(!) 参加运算的表达式为真时,功效为假;参加运算的表达式为假时,功效为真。譬喻:!0 0 为假,非运算的功效为真,也就是 1。!(5>0) 5>0 的功效是1,为真,非运算的功效为假,也就是 0。输出逻辑运算的功效:
#include <stdio.h> int main(){ int a = 0, b = 10, c = -6; int result_1 = a&&b, result_2 = c||0; printf("%d, %dn", result_1, !c); printf("%d, %dn", 9&&0, result_2); printf("%d, %dn", b||100, 0&&0); return 0; } 运行功效: 0, 0 0, 1 1, 0 逻辑运算符和其余运算符优先级从低到高依次为:赋值运算符(=) < &&和|| < 相关运算符 < 算术运算符 < 非(!) && 和 || 低于相关运算符,! 高于算术运算符。 凭证运算符的优先次序可以得出:a>b && c>d 等价于 (a>b)&&(c>d) !b==c||d<a 等价于 ((!b)==c)||(d<a) a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b) 其它,逻辑表达式也可以嵌套行使,譬喻a>b && b || 9>c,a || c>d && !p。 逻辑运算符举例:
#include <stdio.h> int main(){ char c='k'; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf( "%d,%dn", !x*!y, !!!x ); printf( "%d,%dn", x||i&&j-3, i<j&&x<y ); printf( "%d,%dn", i==5&&c&&(j=8), x+y||i+j+k ); return 0; } 运行功效: 0,0 1,0 0,1 本例中!x和!y别离为0,!x*!y也为0,故其输出值为0。因为x为非0,故!!!x的逻辑值为0。对x|| i && j-3式,先计较j-3的值为非0,再求i && j-3的逻辑值为1,故x||i&&j-3的逻辑值为 1。对i<j&&x<y式,因为i<j的值为1,而x<y为0故表达式的值为1,0相与,最后为0,对i==5&&c&&(j=8)式,因为i==5为假,即值为0,该表达式由两个与运算构成,以是整个表达式的值为0。对付式x+ y||i+j+k因为x+y的值为非0,故整个或表达式的值为1。(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |