if 敘述的使用

◎も使用時機:當程式流程進行中,需要根據某種條件來決定接下來的動作時,就是使用 if 敘述的時機。例如根據讀取的成績數值來判斷是否及格等。

◎も語法:

(1)  if  (條件式)                        (例)  if  (x >= 60)
{                                              
{
    敘述1 ;                                    
printf("及格,再加油!\n");
    ............                                  
}
    敘述n ;                         
(例)  if  (x >= 60)                              ð 此例與上例完全相同(大括號可省略)
}                                                 
printf("及格,再加油!\n");

此敘述需先檢視「條件式」是否成立。如果成立則執行大括號內的敘述群1~n,不成立則不做任何動作。需要注意的是:(a)「條件式」之後不要加上分號(;), (b) 如果敘述群只有1個(n =1),則大括號 { } 可以省略掉。為方便起見,下面語法敘述就用『敘述群』來代替大括號及內部的 1個或多個敘述。

(2)  if  (條件式)                        (例)  if  (x >= 60)
    敘述群A;                                  printf("及格,再加油!\n");
else                                           else
    敘述群B;                              {
                                                    printf("被當啦!\n");
                                                    printf("真差勁!\n");
                                                }

此敘述一樣需先檢視「條件式」是否成立。如果成立則執行敘述群A,不成立則執行敘述群B,亦即是『二選一』模式。需要注意的是:(a)「條件式」之後不要加上分號(;), (b) else 之後不要特意加上相反的條件。

(3)  if  (條件式A)                       (例)  if  (x >= 90)
    敘述群A;                                   printf("非常棒!\n");
else if (條件式B)                         else  if  (x >= 80)
    敘述群B;                                   printf("很好!\n");
else if (條件式C)                         else  if  (x >= 60)
    敘述群C;                                   printf("馬馬虎虎!\n");
...............................                         else
else                                               printf("被當啦!傻瓜!\n");
    備用敘述群;

此敘述先檢視「條件式A」是否成立,如果成立則執行敘述群A,不成立則再檢視「條件式B」;若條件式B成立則執行敘述群B,否則依次再檢視「條件式C」,以下仿此類推,亦即是『多選一』模式。其中最後的『else  備用敘述群;』部分,是用在如果沒有任一個條件式成立時,則執行「備用敘述群」部分。不過『else  備用敘述群;』如果不需要也可以省略不加進去。需要注意的是:(a) 任一個「條件式」之後不要加上分號(;), (b) else 之後不要特意加上任何條件。

※  最後補充說明如果 if (條件式)後面加分號會有怎樣的情況,例如下例:
if  ( x > 5);
    printf("OK");

此例在執行時,不論 x > 5 是否成立,電腦都會印出「OK」。因為這個分號(;)會被視為是『空敘述』,也就是說電腦會將上例視為
if  ( x > 5)
{  }

printf("OK");

所以 printf("OK"); 已經跟上面的 if 敘述沒有任何關係,這在使用上要多加小心!