C 語言中的三元運算子
你好,未來的編程巫師們!今天,我們將進入C語言中三元運算子的精彩世界。如果你以前從未聽說過它,也別擔心 - 當你學完這堂課後,你將能夠像專家一樣熟練地使用這個強大的工具!
三元運算子是什麼?
在我們深入探討之前,先來設定場景。想像你人在冰淇淋店,必須在巧克力與香草之間做選擇。通常,你會在代碼中使用if-else語句來做這個決定。但假如我告訴你有一個更短暸、更優雅的方法呢?這就是三元運算子的登場!
三元運算子就像一個緊湊的if-else語句。它之所以稱為“三元”,是因為它接受三個操作數。把它想成是你在代碼中做決策的一個捷徑。
C 語言中三元運算子的語法
讓我們來解析這個便捷的運算子的語法:
條件 ? 語句1 : 語句2
以下是它的工作原理:
- 首先,我們評估“條件”。
- 如果它為真,我們執行“語句1”。
- 如果它為假,我們執行“語句2”。
很簡單對吧?這就像是在問,“這個條件是真的嗎?如果是,就做這個;如果不是,就做那個。”現在,讓我們看看它是如何實作的!
示例 1:C 語言中的三元運算子
讓我們從一個基本的例子開始:
#include <stdio.h>
int main() {
int age = 20;
char *status = (age >= 18) ? "adult" : "minor";
printf("You are an %s.\n", status);
return 0;
}
在這個例子中,我們正在檢查age
是否為18歲或以上。如果是,我們將"adult"賦值給status
;否則,我們將"minor"賦值給它。輸出將會是“You are an adult.”。
讓我們來解析一下:
-
(age >= 18)
是我們的條件 -
"adult"
是如果條件為真的賦值 -
"minor"
是如果條件為假的賦值
示例 2:比較數字
現在,讓我們使用三元運算子來找出兩個數字中較大的那個:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max = (a > b) ? a : b;
printf("The larger number is: %d\n", max);
return 0;
}
在這裡,我們正在比較a
和b
。如果a
較大,我們將a
賦值給max
;否則,我們將b
賦值給它。輸出將會是“The larger number is: 20”。
示例 3:判斷偶數或奇數
讓我們使用三元運算子來檢查一個數字是否為偶數或奇數:
#include <stdio.h>
int main() {
int number = 7;
printf("%d is %s.\n", number, (number % 2 == 0) ? "even" : "odd");
return 0;
}
在這個例子中,我們使用模數運算符(%
)來檢查number
是否能被2整除。如果可以,我們列印"even";否則,我們列印"odd"。輸出將會是“7 is odd。”。
示例 4:絕對值
以下是我們如何使用三元運算子來找出一個數字的絕對值:
#include <stdio.h>
int main() {
int number = -5;
int absolute = (number < 0) ? -number : number;
printf("The absolute value of %d is %d.\n", number, absolute);
return 0;
}
如果number
為負數,我們將其乘以-1使其變為正數;否則,我們保持不變。輸出將會是“The absolute value of -5 is 5。”
示例 5:成績分類
讓我們使用三元運算子來分類成績:
#include <stdio.h>
int main() {
int score = 75;
char *result = (score >= 60) ? "Pass" : "Fail";
printf("Your score is %d. Result: %s\n", score, result);
return 0;
}
在這裡,我們正在檢查score
是否為60或以上。如果是,我們將"Pass"賦值給result
;否則,我們將"Fail"賦值給它。輸出將會是“Your score is 75. Result: Pass”。
示例 6:閏年檢查
讓我們使用三元運算子來檢查一年是否為閏年:
#include <stdio.h>
int main() {
int year = 2024;
char *result = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Leap Year" : "Not a Leap Year";
printf("%d is %s.\n", year, result);
return 0;
}
這個例子檢查year
是否能被4整除但不能被100整除,或者是否能被400整除。如果這兩個條件中的任何一個為真,則它就是閏年。輸出將會是“2024 is Leap Year。”
嵌套的三元運算子
現在,讓我們來看看嵌套的三元運算子。這就像是用你的代碼玩俄羅斯套娃!
#include <stdio.h>
int main() {
int num = 10;
char *result = (num > 0) ? "positive" : (num < 0) ? "negative" : "zero";
printf("%d is %s.\n", num, result);
return 0;
}
在這個例子中,我們首先檢查num
是否為正數。如果它不是,然後我們檢查它是否為負數。如果它既不是正數也不是負數,那麼它一定是零。輸出將會是“10 is positive。”
結論
就是這樣,各位!你剛剛學會了C語言中的三元運算子。這是一個強大的工具,如果正確使用,可以使你的代碼更簡潔、更易讀。記住,能力越大,責任越大 - 請明智地使用三元運算子!
以下是我们所涵盖的方法的快速參考表:
方法 | 語法 | 示例 |
---|---|---|
基本三元 | 條件 ? 語句1 : 語句2 |
(age >= 18) ? "adult" : "minor" |
比較數字 | (a > b) ? a : b |
int max = (a > b) ? a : b; |
判斷偶數或奇數 | (num % 2 == 0) ? "even" : "odd" |
(7 % 2 == 0) ? "even" : "odd" |
絕對值 | (num < 0) ? -num : num |
int abs = (num < 0) ? -num : num; |
成績分類 | (score >= 60) ? "Pass" : "Fail" |
char *result = (score >= 60) ? "Pass" : "Fail"; |
閏年檢查 | ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Leap Year" : "Not a Leap Year" |
char *result = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Leap Year" : "Not a Leap Year"; |
嵌套三元 | cond1 ? 語句1 : cond2 ? 語句2 : 語句3 |
(num > 0) ? "positive" : (num < 0) ? "negative" : "zero" |
繼續練習,你將會成為三元運算子的高手!編程愉快!
Credits: Image by storyset