C語言---判斷語句

文章目錄

  • 1. if 語句
  • 2. if...else 語句
  • 3. if...else if...else 語句
  • 4. switch 語句
  • 5. 三元運算符 ( ? : )
  • 總結與對比
  • 如何選擇

C語言中的判斷語句用于根據給定的條件來決定執行哪一段代碼。其核心是條件為真(必須)則執行一段代碼,條件為假(非必須)則執行另一段代碼。
C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。
C語言提供了以下幾種主要的判斷/分支結構:
1、if 語句
2、if…else 語句
3、if…else if…else 語句
4、switch 語句
5、三元運算符(條件運算符)

1. if 語句

這是最基本的形式。如果條件為真,則執行后面的代碼塊。
語法:

if (condition) {// 如果 condition 為真(非0),則執行這里的代碼
}

示例:

#include <stdio.h>int main() {int number = 10;if (number > 5) {printf("數字大于5。\n"); // 這行會被執行}return 0;
}

2. if…else 語句

在 if 的基礎上增加了一個 else 分支。如果條件為真,執行 if 的代碼塊;如果為假,則執行 else 的代碼塊。

語法:

if (condition) {// 條件為真時執行
} else {// 條件為假時執行
}

示例:

#include <stdio.h>int main() {int age = 16;if (age >= 18) {printf("你已成年。\n");} else {printf("你是未成年人。\n"); // 這行會被執行}return 0;
}

3. if…else if…else 語句

用于檢查多個條件。程序會按順序檢查每個 if 或 else if 的條件,一旦某個條件為真,就執行其對應的代碼塊,然后跳過整個判斷結構的其余部分。
語法:

if (condition1) {// condition1 為真時執行
} else if (condition2) {// condition1 為假但 condition2 為真時執行
} else if (condition3) {// condition1 和 condition2 都為假但 condition3 為真時執行
} else {// 所有上述條件都為假時執行
}
// 可以有很多個 else if

示例:

#include <stdio.h>int main() {int score = 85;if (score >= 90) {printf("成績優秀!\n");} else if (score >= 80) { // 85 >= 80 為真,執行這里printf("成績良好。\n"); // 這行會被執行} else if (score >= 70) {printf("成績中等。\n");} else if (score >= 60) {printf("成績及格。\n");} else {printf("成績不及格。\n");}return 0;
}

4. switch 語句

switch 語句用于基于一個整型或字符型表達式的值來執行不同的代碼塊。它是一種多路分支選擇結構,比多個 if…else if 更清晰。
語法:

switch (expression) {case constant1:// 如果 expression 的值等于 constant1,執行這里的代碼break; // break 用于跳出 switchcase constant2:// 如果 expression 的值等于 constant2,執行這里的代碼break;case constant3:// ...break;default:// 如果 expression 的值不匹配任何 case,執行這里的代碼// default 是可選的
}

重要規則:
1、expression 的結果必須是整型或字符型。
2、case 后面的值必須是整型或字符型常量。
3、break 語句至關重要。如果省略 break,程序會繼續執行下一個 case 中的代碼,直到遇到 break 或 switch 結束。這被稱為“穿透”(fallthrough),有時會故意這樣用。
示例:

#include <stdio.h>int main() {char grade = 'B';switch (grade) {case 'A':printf("完美!\n");break;case 'B':printf("做得很好!\n"); // 這行會被執行break;case 'C':printf("做得不錯。\n");break;case 'D':printf("剛好及格。\n");break;case 'F':printf("不及格,需要再努力。\n");break;default:printf("無效的成績。\n");}return 0;
}

故意使用“穿透”的示例:

#include <stdio.h>int main() {int number = 2;switch (number) {case 1:case 2:case 3:printf("數字是1, 2或3。\n"); // number=1,2,3 都會執行這里break;case 4:printf("數字是4。\n");break;default:printf("數字不是1,2,3,4。\n");}return 0;
}

5. 三元運算符 ( ? : )

這是一個非常簡潔的條件表達式,可以看作是 if…else 的簡寫形式。它返回一個值。
語法:

condition ? expression_if_true : expression_if_false;
如果 condition 為真,整個表達式的值為 expression_if_true 的結果,否則為 expression_if_false 的結果。

示例:

#include <stdio.h>int main() {int a = 10, b = 20;int max;// 等價于: if (a > b) { max = a; } else { max = b; }max = (a > b) ? a : b;printf("較大的數字是:%d\n", max); // 輸出 20// 也可以直接用在函數參數等地方printf("a是%s\n", (a % 2 == 0) ? "偶數" : "奇數"); // 輸出 "a是偶數"return 0;
}

圖片來自菜鳥教程:https://www.runoob.com/cprogramming/c-decision.html
在這里插入圖片描述

總結與對比

語句類型用途優點
if簡單的單條件判斷結構簡單,適用于所有條件、
if…else二選一的分支邏輯清晰,處理真假兩種情況\
if…else if…else多條件分支判斷可以處理復雜的多個并列或遞進條件
switch基于單個表達式的多個固定值進行分支結構清晰,效率高(通常使用跳轉表)
三元運算符 ? :簡單的二選一條件賦值或返回代碼簡潔,一行完成

如何選擇

1、如果判斷的條件是一個變量是否等于某些特定的常量值,優先考慮 switch,會使代碼更清晰。

2、如果條件是一個范圍(如 score > 60)或者涉及多個變量的復雜邏輯(如 a > b && c < d),則必須使用 if 系列語句。

3、如果只是簡單的二選一賦值,三元運算符非常方便。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922323.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922323.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922323.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[硬件電路-212]:電流的本質確實是電子的移動

1. 微觀機制&#xff1a;電子的定向漂移與熱運動定向漂移&#xff08;Drift Motion&#xff09;&#xff1a;在導體&#xff08;如金屬&#xff09;中&#xff0c;自由電子&#xff08;價電子&#xff09;受電場驅動&#xff0c;從負端向正端定向移動&#xff0c;形成宏觀電流。…

雙RFSOC47DR-16通道5GSPS ADC采集模塊

16通道5GSPS ADC采集板卡組成如圖1所示。該板卡的輸入接口為SMA單端輸入&#xff0c;ADC采集和處理采用Xilinx公司的XCZU47DR-2FFVE1156I芯片。板卡需配備4路QSFP28光口輸出&#xff0c;并需要集成網口、DDR4、SD卡、USB調試口。兩塊RF-Soc需確保連接通信功能。板卡的16通道需實…

pytest -- 中文文檔

前言 零基礎1小時快速入門pytest自動化測試教程&#xff0c;全套項目框架實戰pytest配置文件可以改變pytest的運行方式&#xff0c;它是一個固定的文件pytest.ini文件&#xff0c;讀取配置信息&#xff0c;按指定的方式去運行 非test文件 pytest里面有些文件是非test文件 pyt…

硬件開發2-ARM裸機開發3-IMX6ULL - 引入中斷

一、鋪墊引入中斷 → 按鍵1、概要&#xff1a;實現按鍵控制發光二極管和蜂鳴器輸入類型的外設&#xff1a;按鍵&#xff08;key&#xff09;2、參考手冊內容完成配置過程&#xff08;1&#xff09;key 按鍵原理圖&#xff08;2&#xff09;core 內核中命名 -- UART1 CTS&#x…

Ansible的 Playbook 模式詳解

目錄一、Playbook模式1.1 Playbook 的優勢1.2 Playbook 的組成1.3 安裝 httpd 服務案例1.4 Playbook 命令及常用參數1.5 Playbook 的語法 —— 權限相關1. remote_user2. become3. become_method1.6 Playbook 的通知與觸發機制1. notify2. handlers3. 使用示例4. 使用場景1.6 P…

猿輔導Java后臺開發面試題及參考答案

int 與 Integer 的區別是什么&#xff1f;若創建數量龐大的數字時使用 Integer&#xff0c;會對重復數字創建新對象嗎&#xff1f;int 是 Java 中的基本數據類型&#xff0c;直接存儲數值&#xff0c;占用 4 個字節&#xff0c;默認值為 0&#xff0c;不需要通過 new 關鍵字創建…

代碼隨想錄學習摘抄day9(回溯1-11)

一個樸實無華的目錄定義&#xff1a;回溯法也可以叫做回溯搜索法&#xff0c;它是一種搜索的方式。應用場景&#xff1a;回溯法解決的問題都可以抽象為樹形結構代碼模板題型第77題. 組合思路&#xff1a;每次從集合中選取元素&#xff0c;可選擇的范圍隨著選擇的進行而收縮&…

Altium Designer(AD24)打開工程文件的幾種方法

??《專欄目錄》 目錄 1,概述 2,源文件 2,菜單欄 4,工具欄 5,注意事項 1,概述 本文介紹幾種打開工程文件的方法。 2,源文件 找到工程的源文件存儲路徑,找到.PrjPcb的源工程文件,雙擊打開。 2,菜單欄 第1步:執行File→Open, 第2步:找到工程文件的存儲路徑,并選中…

Linux嵌入式自學筆記(基于野火EBF6ULL):2.點燈與ubuntu安裝

一、點燈登錄root&#xff1a;賬號&#xff1a;root ; 密碼&#xff1a;root點燈命令&#xff1a;echo 0 > /sys/class/leds/red/brightness #關閉red燈 echo 0 > /sys/class/leds/blue/brightness #關閉blue燈 echo 0 > /sys/class/leds/green/brightness …

【Java實戰?】Java實戰:MyBatis-Plus 開啟MySQL數據庫高效操作之旅

目錄 一、MyBatis-Plus 環境集成 1.1 項目依賴引入 1.2 數據庫配置 1.3 代碼生成器使用 二、核心 CRUD 操作實現 2.1 基礎查詢 2.2 數據新增與修改 2.3 復雜查詢場景 三、性能優化與高級特性 3.1 緩存配置 3.2 樂觀鎖實現 3.3 字段自動填充 四、實戰案例:用戶管理模塊開發 4.1…

開學季干貨——知識梳理與經驗分享

技術文章大綱&#xff1a;開學季干貨——知識梳理與經驗分享目標受眾分析明確文章面向的學生群體&#xff08;如大學生、高中生&#xff09; 分析不同群體的核心需求&#xff08;課程準備、時間管理、工具使用&#xff09; 結合技術場景&#xff08;如數字筆記、在線協作&#…

Linux《線程(上)》

通過之前的學習我們已經了解了操作系統當中的基本的概念包括進程、基礎IO、磁盤文件存儲等&#xff0c;但是到目前為止我們還未了解到線程相關的概念&#xff0c;這就使得當前我們對操作系統的認知還不是完整的&#xff0c;現在我們是還是無法理解一個進程當中是如何同時的執行…

為什么知識復用時缺乏場景化指導影響實用性

知識復用時因缺乏場景化指導而嚴重影響實用性&#xff0c;其根本原因在于知識的價值本質上根植于其應用情境。脫離了場景的“純知識”往往是抽象、片面且難以行動的。這導致了認知鴻溝的產生、隱性知識的流失、決策風險的增加、以及學習遷移效率的低下。當使用者面對一份缺乏“…

擁抱直覺與創造力:走進VibeCoding的新世界

引言 在傳統觀念里&#xff0c;編程是一項高度理性、邏輯嚴密的活動&#xff0c;開發者需要像建筑師一樣&#xff0c;用代碼一行行地精確構建數字世界。然而&#xff0c;隨著人工智能技術的飛速發展&#xff0c;一種全新的編程理念和體驗正在興起——它就是 VibeCoding&#xf…

HTTP的Web服務測試在Python中的實現

在Web開發領域&#xff0c;對HTTP Web服務進行測試是確保服務穩定性和可靠性的關鍵步驟。Python作為一種功能強大的編程語言&#xff0c;提供了多種工具和庫來簡化這一過程。本文將介紹如何在Python中實現HTTP的Web服務測試。首先&#xff0c;Python的requests庫是測試HTTP Web…

Android Studio 構建項目時 Gradle 下載失敗的解決方案

一、問題原因分析根據錯誤日志&#xff1a;下載地址 https://services.gradle.org/distributions/gradle-8.1-bin.zip 連接超時&#xff08;10秒&#xff09;。可能原因&#xff1a;網絡環境限制&#xff08;如公司防火墻、地區網絡屏蔽&#xff09;。代理配置未生效或配置錯誤…

mysql 與 MongoDB 的分片

MySQL 和 MongoDB 作為不同類型數據庫的代表(關系型 vs 文檔型),其分片機制在設計理念、實現方式和適用場景上存在顯著差異。兩者的分片核心目標一致——通過水平擴展(Scale Out)解決單節點存儲容量和性能瓶頸,但因數據模型、事務支持和分布式設計理念的不同,形成了截然…

Coze源碼分析-資源庫-創建知識庫-前端源碼-核心邏輯與接口

創建知識庫邏輯 1. 表單驗證系統 文件位置&#xff1a;frontend/packages/data/knowledge/knowledge-modal-base/src/create-knowledge-modal-v2/features/add-type-content/coze-knowledge/index.tsx 知識庫創建表單的驗證規則&#xff1a; // 知識庫名稱驗證規則 const nameV…

歐拉函數 | 定義 / 性質 / 應用

注&#xff1a;本文為 “歐拉函數” 相關合輯。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 歐拉函數最全總結 jiet07 已于 2024-10-22 10:00:54 修改 一、歐拉函數的引入 首先引入互質關系&#xff1a; 如果兩個正整數&#xff0c;除了 111 以…

ubuntu git push每次都要輸入密碼怎么解決只輸入一次密碼

在 Ubuntu 下使用 Git 時&#xff0c;如果每次 push 都需要重復輸入密碼&#xff0c;可以通過配置 Git 憑證存儲來解決。以下是幾種常用方法&#xff1a; &#x1f511; 方法一&#xff1a;使用 Git 憑證緩存&#xff08;推薦&#xff09; 設置憑證緩存&#xff08;默認 15 分鐘…