if-else語句是更為常用的if語句。它用於實現雙分支結構,即當需要在兩組語句中選擇一組去執行時,常用if-else語句去實現。其一般形式為:
if(表達式)
語句1;
else
語句2;
其語義是:如果表達式的值為真,則執行語句1,否則執行語句2。注意到這裏是一種二選一的情況,即無論表達式的值是真還是假,在語句1和語句2中,總有一組要被執行。
說明:
(1)else語句是if-else結構的組成部分,但不能單獨使用,必須與if配對。
(2)語句1和語句2可以是單條語句,也可以是多條語句。如果是多條語句,則必須包含在一對花括號“{}”中,成為一個複合語句。
[例54]輸入一個英文字母,將大寫字母變成小寫字母,小寫字母變成大寫字母,並輸出。
voidmain()
{
charch;
printf("pleaseinputacharacter:");
scanf("%c",&ch);
if(ch>=a&&ch
b)
max=a;
else
max=b;
可用條件表達式寫為:
(a>b)?(max=a):(max=b);
或
max=(a>b)?a:b;
執行該語句的語義是:如果a>b為真,則把a的值賦予max,否則把b的值賦予max。
說明:
(1)條件運算符“?”和“:”是一對運算符,不能分開單獨使用,即在C語言中沒有單獨的“?”運算符和“:”運算符。考慮結合性時,也應將“?”和“:”看作一個整體。如當出現兩個條件運算符嵌套時:
a>b?a:b>c?b:c
等價於
a>b?a:(b>c?b:c)
(2)條件運算符的運算優先級低於關係運算符和算術運算符,但高於賦值運算符。
因此,
max=(a>b)?a:b
可以去掉括號而寫為:
max=a>b?a:b
[例55]求a,b,c三個數的最大值,並輸出結果。用條件運算符實現。