1. 程式人生 > >C語言:分支結構程式

C語言:分支結構程式

一.關係運算符和表示式
在程式中經常需要比較兩個量的大小關係,以決定程式下一步的工作。比較兩個量的運算子稱為關係運算符。

(1)關係運算符及優先次序
在C語言中有以下關係運算符:
1.< 小於
2. <= 小於或等於
3. > 大於
4. >= 大於或等於
5. == 等於
6. != 不等於

在六個關係運算符中,<,<=,>,>=的優先順序相同,高於== 和!=,==和!=的優先順序相同。

(2)關係表示式
關係表示式的一般形式:表示式 關係運算符 表示式

例如:
a+b>c-d
x>3/2
‘a’+1<c
-i-5*j==k+1
都是合法的關係表示式。由於表示式也可以又是關係表示式, 因此也允許出現巢狀的情況。

例如:
a>(b>c)
a!=(c==d)

關係表示式的值是真”和“假”,用“1”和“0”表示。

例如:
5>0 的值為“真”,即為 1。
(a=3)>(b=5)由於 3>5 不成立,故其值為假,即為 0。

二.邏輯運算子和表示式

(1)邏輯運算子及優先次序
C語言中提供了三種邏輯運算子:

  1. && 與運算
  2. || 或運算
  3. ! 非運算

與運算子"&& “和或運算子”||“均為雙目運算子。具有左結合性。非運算子”!"為單目運算子,具有右結合性。

“&&”和“||”低於關係運算符,“!”高於算術運算子。
按照運算子的優先順序可以得出:

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)

(2)邏輯運算的值
邏輯運算的值也為“真”和“假”兩種,用“1”和“0 ”來表示。

  1. 與運算 &&:參與運算的兩個量都為真時,結果才為真,否則為假。
  2. 或運算||:參與運算的兩個量只要有一個為真,結果就為真。 兩個量都為假時,結果為假。
    3.非運算!:參與運算量為真時,結果為假;參與運算量為假時,結果為真。

(3)邏輯表示式
邏輯表示式的一般形式:表示式 邏輯運算子 表示式
其中的表示式可以又是邏輯表示式,從而組成了巢狀的情形。

例如:
(a&&b)&&c
邏輯表示式的值是式中各種邏輯運算的最後值,以“1”和“0”分別代表“真”和“假”

三.if 語句
(1)if 語句的三種形式
1.if (表示式) 語句
其語義是:如果表示式的值為真,則執行其後的語句, 否則不執行該語句。

2.if-else

if(表示式) 
   語句1;
else
   語句2;

其語義是:如果表示式的值為真,則執行語句 1,否則執行語句 2 。
3.if-else-if

if(表示式 1)
   語句 1;
else if(表示式 2)
       語句 2;
else if(表示式 3)
      語句 3;
…
else if(表示式 m)
        語句 m;
else
      語句 n;

其語義是:依次判斷表示式的值,當出現某個值為真時,則執行其對應的語句。然後跳到整個 if 語句之外繼續執行程式。 如果所有的表示式均為假,則執行語句 n。然後繼續執行後續程式。

(2)條件運算子和條件表示式
條件運算子為?和:,它是一個三目運算子,即有三個參與運算的量。
由條件運算子組成條件表示式的一般形式為:

表示式1 ? 表示式2: 表示式3

其求值規則為:如果表示式 1 的值為真,則以表示式 2 的值作為條件表示式的值,否則以表示式 2 的值作為整個條件表示式的值。

注意:
1.條件運算子的運算優先順序低於關係運算符和算術運算子,但高於賦值符。

例如:

max=(a>b)?a:b

可以去掉括號而寫為

max=a>b?a:b
  1. 條件運算子?和:是一對運算子,不能分開單獨使用。
  2. 條件運算子的結合方向是自右至左。

例如:

 a>b?a:c>d?c:d

應理解為

   a>b?a:(c>d?c:d)

這也就是條件表示式巢狀的情形,即其中的表示式 3 又是一個條件表示式。

四.switch 語句
C語言還提供了另一種多分支選擇的switch語句,其一般表示式為:

switch(表示式)
{
case 常量表達式 1: 語句 1;
case 常量表達式 2: 語句 2;
…
case 常量表達式 n: 語句 n;
default : 語句 n+1;
}

其語義是:計算表示式的值。 並逐個與其後的常量表達式值相比較,當表示式的值與某個常量表達式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case 後的語句。如表示式的值與所有 case 後的常量表達式均不相同時,則執行 default 後的語句。