
- C程式設計教程
- C - 首頁
- C語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境搭建
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林值
- C語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C語言中的決策語句
- C - 決策語句
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C語言中的函式
- C - 函式
- C - 主函式
- C - 按值傳遞函式呼叫
- C - 按引用傳遞函式呼叫
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者定義函式
- C - 回撥函式
- C - 返回語句
- C - 遞迴
- C語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 變長陣列
- C語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指向指標的指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - void 指標
- C - 懸空指標
- C - 解引用指標
- C - 近指標、遠指標和巨指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C語言中的結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點(.)運算子
- C - 列舉(或列舉型別)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - Typedef
- C語言中的檔案處理
- C - 輸入輸出
- C - 檔案I/O(檔案處理)
- C預處理器
- C - 預處理器
- C - 指令
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C程式設計資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C語言中的三元運算子
C語言中的三元運算子(?:)是一種條件運算子。“三元”表示該運算子有三個運算元。三元運算子通常用於以更緊湊的方式編寫多個條件(if-else)語句。
C語言中三元運算子的語法
三元運算子使用以下語法:
exp1 ? exp2 : exp3
它使用三個**運算元**:
- **exp1** - 求值為真或假的布林表示式
- **exp2** - 當 exp1 為真時,由 ? 運算子返回
- **exp3** - 當 exp1 為假時,由 ? 運算子返回
示例 1:C語言中的三元運算子
以下C程式使用三元運算子檢查變數的值是偶數還是奇數。
#include <stdio.h> int main(){ int a = 10; (a % 2 == 0) ? printf("%d is Even \n", a) : printf("%d is Odd \n", a); return 0; }
輸出
執行此程式碼時,將產生以下輸出:
10 is Even
將“a”的值更改為 15 並再次執行程式碼。現在您將獲得以下**輸出**:
15 is Odd
示例 2
條件運算子是 if-else 結構的緊湊表示形式。我們可以透過以下程式碼重寫檢查奇偶數的邏輯:
#include <stdio.h> int main(){ int a = 10; if (a % 2 == 0){ printf("%d is Even\n", a); } else{ printf("%d is Odd\n", a); } return 0; }
輸出
執行程式碼並檢查其輸出:
10 is Even
示例 3
以下程式比較兩個變數“a”和“b”,並將較大的值賦給變數“c”。
#include <stdio.h> int main(){ int a = 100, b = 20, c; c = (a >= b) ? a : b; printf ("a: %d b: %d c: %d\n", a, b, c); return 0; }
輸出
執行此程式碼時,將產生以下輸出:
a: 100 b: 20 c: 100
示例 4
使用 if-else 結構的相應程式碼如下:
#include <stdio.h> int main(){ int a = 100, b = 20, c; if (a >= b){ c = a; } else { c = b; } printf ("a: %d b: %d c: %d\n", a, b, c); return 0; }
輸出
執行程式碼並檢查其輸出:
a: 100 b: 20 c: 100
示例 5
如果需要在三元運算子的真運算元和/或假運算元中放置多個語句,則必須用逗號分隔它們,如下所示:
#include <stdio.h> int main(){ int a = 100, b = 20, c; c = (a >= b) ? printf ("a is larger "), c = a : printf("b is larger "), c = b; printf ("a: %d b: %d c: %d\n", a, b, c); return 0; }
輸出
在此程式碼中,較大的數字被賦值給“c”,並列印相應的提示資訊。
a is larger a: 100 b: 20 c: 20
示例 6
使用 if-else 語句的相應程式如下:
#include <stdio.h> int main(){ int a = 100, b = 20, c; if(a >= b){ printf("a is larger \n"); c = a; } else{ printf("b is larger \n"); c = b; } printf ("a: %d b: %d c: %d\n", a, b, c); return 0; }
輸出
執行程式碼並檢查其輸出:
a is larger a: 100 b: 20 c: 100
巢狀三元運算子
就像我們可以使用巢狀 if-else 語句一樣,我們可以在真運算元和假運算元中使用三元運算子。
exp1 ? (exp2 ? expr3 : expr4) : (exp5 ? expr6: expr7)
首先,C 檢查 expr1 是否為真。如果是,則檢查 expr2。如果為真,則結果為 expr3;如果為假,則結果為 expr4。
如果 expr1 為假,則它可能會檢查 expr5 是否為真,並返回 expr6 或 expr7。
示例 1
讓我們開發一個C程式來確定一個數字是否能被 2 和 3 整除,或者被 2 整除但不能被 3 整除,或者被 3 整除但不能被 2 整除,或者既不能被 2 也不能被 3 整除。我們將為此目的使用巢狀條件運算子,如下面的程式碼所示:
#include <stdio.h> int main(){ int a = 15; printf("a: %d\n", a); (a % 2 == 0) ? ( (a%3 == 0)? printf("divisible by 2 and 3") : printf("divisible by 2 but not 3")) : ( (a%3 == 0)? printf("divisible by 3 but not 2") : printf("not divisible by 2, not divisible by 3") ); return 0; }
輸出
檢查不同的值:
a: 15 divisible by 3 but not 2 a: 16 divisible by 2 but not 3 a: 17 not divisible by 2, not divisible by 3 a: 18 divisible by 2 and 3
示例 2
在此程式中,我們使用巢狀 if-else 語句實現了相同的功能,而不是使用條件運算子:
#include <stdio.h> int main(){ int a = 15; printf("a: %d\n", a); if(a % 2 == 0){ if (a % 3 == 0){ printf("divisible by 2 and 3"); } else { printf("divisible by 2 but not 3"); } } else{ if(a % 3 == 0){ printf("divisible by 3 but not 2"); } else { printf("not divisible by 2, not divisible by 3"); } } return 0; }
輸出
執行此程式碼時,將產生以下輸出:
a: 15 divisible by 3 but not 2