C 速查手冊
3.9 條件運算子
條件運算子是 C 語言裡唯一的三元運算子 ?: ,需要三個運算元,三個運算元都可為運算式,形式如下
expr1?expr2:expr3
若 expr1 為真,運算結果會是 expr2 的值,若為假,運算結果則是 expr3 的值。
條件運算子通常利用在需要二選一的情況下,例如比較兩個整數取較大的值
#include <stdio.h>
int main(void)
{
int a = 22;
int b = 34;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("%d 較大\n", a > b ? a : b);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:conbigger.c
功能:利用條件運算子兩數中的求得較大值
作者:張凱慶 */
編譯後執行,如下
$ gcc conbigger.c |
$ a.out |
a = 22 |
b = 34 |
34 較大 |
$ |
也可以利用在字串中依性別選字
#include <stdio.h>
int main(void)
{
int sex1 = 0;
int sex2 = 1;
printf("%s坐在公園的長椅上。\n", sex1 ? "她" : "他");
printf("%s跑了過來....\n", sex2 ? "她" : "他");
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:conword.c
功能:利用條件運算子選字
作者:張凱慶 */
編譯後執行,如下
$ gcc conword.c |
$ a.out |
他坐在公園的長椅上。 |
她跑了過來.... |
$ |
條件運算子有時可用來簡化 if-else 陳述,如以下程式
#include <stdio.h>
int main(void)
{
int a = 22;
int b = 34;
int max;
if (a > b) {
max = a;
}
else {
max = b;
}
printf("max = %d\n", max);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:conmax.c
功能:利用 if-else 選取兩數中的較大值
作者:張凱慶 */
編譯後執行,如下
$ gcc conmax.c |
$ a.out |
max = 34 |
$ |
其中 if-else 的部分,便可用以下
max = (a > b) ? a : b;
來取代。