!(非)算术运算符关系运算符
&& 和 ||
赋值运算符
!(非)→&&(与)→||(或)
"&&"和"||"低于关系运算符,"!"高于算术运算符。 按照运算符的优先顺序可以得出:
5.2.2 逻辑运算的值逻辑运算的值也为"真"和"假"两种,用"1"和"0 "来表示。其求值规则如下:
1. 与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。例如:
5>0 && 4>2
由于 5>0 为真,4>2 也为真,相与的结果也为真。
2. 或运算||:参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。
例如:
5>0||5>8
由于 5>0 为真,相或的结果也就为真。
3. 非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。 例如:
!(5>0)
的结果为假。
虽然C编译在给出逻辑运算值时,以"1"代表"真","0 "代表"假"。 但反过来在判断一个量是为"真"还是为"假"时,以"0"代表"假",以非"0"的数值作为
"真"。例如:
由于 5 和 3 均为非"0"因此 5&&3 的值为"真",即为 1。又如:
5||0 的值为"真",即为 1。
5.2.3 逻辑表达式逻辑表达式的一般形式为:
表达式 逻辑运算符 表达式
其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。 例如:
(a&&b)&&c
根据逻辑运算符的左结合性,上式也可写为: a&&b&&c
逻辑表达式的值是式中各种逻辑运算的最后值,以"1"和"0"分别代表"真"和"假"。
【例 5.2】
本例中!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。
5.3 if 语句用 if 语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。
C语言的 if 语句有三种基本形式。
5.3.1 if 语句的三种形式1. 第一种形式为基本形式:if
if(表达式) 语句
其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。其过程可表示为下图。
【例 5.3】