C/C++ 三元運算子

介紹 C/C++ 三元運算子的用法,在 C/C++ 使用三元運算子(ternary operator) 好處是程式碼可以看起來比較簡短,
在某些情況 C/C++ 使用三元運算子簡化後程式碼會變得簡潔許多。

C/C++ 三元運算子語法

什麼是三元運算子(ternary operator),簡單說它是 if … else … 的精簡版,
語法如下:

1
條件式 ? 條件式為true時執行的陳述句 : 條件式為false時執行的陳述句

C/C++ 三元運算子範例

上面語法看不懂也沒關係,馬上直接看例子吧!
一般寫 if … else … 的例子如下:

1
2
3
4
5
6
int ret, a = 10, b = 11;
bool flag = true;
if (flag)
ret = a;
else
ret = b;

等價於

1
ret = flag ? a : b;

以上就是是 C/C++ 的三元運算子寫法,
馬上就把程式碼縮短成一行,簡單明瞭,第一次寫的時候會不習慣,看久了後就習慣了。
接下來將提供 C/C++ 更多使用三元運算子的情境,讓你在程式碼中更靈活地處理條件判斷。

C/C++ 三元運算子範例:判斷是正數、負數或零

這裡有另一個使用三元運算子的範例,這次是用來確定一個數字是正數、負數還是零,

1
2
3
4
5
6
7
8
9
10
#include <iostream>

int main() {
int number = 10;

// 使用三元運算子判斷數字的正負性
std::cout << "數字是 " << ((number > 0) ? "正數" : (number < 0) ? "負數" : "零") << std::endl;

return 0;
}

C/C++ 三元運算子範例:兩數取最大值

當 C/C++ 需要找出兩個數字中的最大值時,使用三元運算子更加簡單。以下是一個找出兩個數字最大值的範例,在這個例子中,findMax 函式接受兩個整數參數,並使用三元運算子來找出最大值,

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>

int findMax(int num1, int num2) {
return (num1 > num2) ? num1 : num2;
}

int main() {

std::cout << findMax(1, 2) << std::endl;
std::cout << findMax(4, 3) << std::endl;

return 0;
}

輸出結果如下:

1
2
2
4

也可以將 findMax 函式寫成 MAX 巨集,運用三元運算子的技巧,

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>

#define MAX(x, y) ((x) > (y) ? (x) : (y))

int main() {
// 使用巨集找出最大值
int maxNumber = MAX(5, 2);

std::cout << "最大的數字是: " << maxNumber << std::endl;

return 0;
}

輸出結果如下:

1
最大的數字是: 5

C/C++ 三元運算子範例:判斷奇偶數

以下是 C/C++ 使用三元運算子判斷一個數字是奇數還是偶數的簡單範例,在這個例子中,使用了餘數運算符 % 來判斷一個數字是否能被2整除,如果能整除的話,則是偶數,反之則是奇數,

1
2
3
4
5
6
7
8
9
10
#include <iostream>

int main() {
int number = 5;

// 使用三元運算子判斷奇偶數
std::cout << "數字是 " << ((number % 2 == 0) ? "偶數" : "奇數") << std::endl;

return 0;
}

輸出結果如下:

1
數字是 奇數

以上就是 C/C++ 三元運算子介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

參考
C conditional operators - C Programming - c4learn.com
http://www.c4learn.com/c-programming/c-conditional-operators/
三元運算元使用時機|Ternary operators vs if-else statemanet - Cat for Code.
https://catforcode.com/ternary-operators/
C/C++ Ternary Operator - Some Interesting Observations - GeeksforGeeks
https://www.geeksforgeeks.org/cc-ternary-operator-some-interesting-observations/

其它相關文章推薦
C/C++ 新手入門教學懶人包