C 語言中的三元運算子

你好,未來的編程巫師們!今天,我們將進入C語言中三元運算子的精彩世界。如果你以前從未聽說過它,也別擔心 - 當你學完這堂課後,你將能夠像專家一樣熟練地使用這個強大的工具!

C - Ternary Operator

三元運算子是什麼?

在我們深入探討之前,先來設定場景。想像你人在冰淇淋店,必須在巧克力與香草之間做選擇。通常,你會在代碼中使用if-else語句來做這個決定。但假如我告訴你有一個更短暸、更優雅的方法呢?這就是三元運算子的登場!

三元運算子就像一個緊湊的if-else語句。它之所以稱為“三元”,是因為它接受三個操作數。把它想成是你在代碼中做決策的一個捷徑。

C 語言中三元運算子的語法

讓我們來解析這個便捷的運算子的語法:

條件 ? 語句1 : 語句2

以下是它的工作原理:

  1. 首先,我們評估“條件”。
  2. 如果它為真,我們執行“語句1”。
  3. 如果它為假,我們執行“語句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;
}

在這裡,我們正在比較ab。如果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