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;

來取代。

上一頁 3.8 指派運算子
回 C 速查手冊首頁
下一頁 單元 4 - 型態轉換
回 C 教材首頁
回程式語言教材首頁