【時時三省】(C語言基礎)條件運算符和條件表達式

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省

有一種if語句,當被判別的表達式的值為“真”或“假”時,都執行一個賦值語句且向一個變量賦值。

如:

if ( a > b )

max = a;

else

max = b ;

當a > b時將a的值賦給max,當a < b時將b的值賦給max,可以看到無論a > b是否滿足,都是給同一個變量賦值。

C提供條件運算符和條件表達式來處理這類問題。可以把上面的if語句改寫為

max= ( a > b ) ? a : b;

賦值號右側的

“( a > b ) ? a:b”是一個“條件表達式”。

“?”是條件運算符。

如果( a > b )條件為真,則條件表達式的值等于a;否則取值b。

如果a等于5,b等于3,則條件表達式“( a > b ) ? a : b”的值就是a的值5,把它賦給變量max,因此max的值為5。

條件運算符由兩個符號( ?和:)組成,必須一起使用。要求有3個操作對象,稱為三目(元)運算符,它是C語言中唯一的一個三目運算符。

條件表達式的一般形式為

表達式1??表達式:表達式3

可以這樣形象地理解:先計算出表達式1的值,表達式1后面的問號表示“該往哪里走啊?”,有兩條路,如果表達式1的值為真(非0),自然直接到表達式2,如為假(0值),就繞過表達式2,到表達式3。

說明:

( 1 )條件運算符的執行順序:先求解表達式1 ,若為非0 (真)則求解表達式2 ,此時表達求2的值就作為整個條件表達式的值。若表達式1的值為0(假),則求解表達式3 .表達式3的值就是整個條件表達式的值。賦值表達式max= ( a > b ) ? a : b的執行結果就是將條件表達式的值賦給max,也就是將a和b二者中的大者賦給max。

( 2 )條件運算符優先于賦值運算符,因此賦值表達式的求解過程是先求解條件表達式,再將它的值賦給max。

( 3 )上面的例子是利用了條件表達式的值,把它賦給一個變量max。其實也可以不把條件表達式的值賦予一個變量,而在條件表達式中的表達式2和表達式3中對max賦值,并在條件表達式后面加一個分號,就成為一個獨立的語句。

如:

a > b ? ( max = a ) : ( max = b );

表達式2和表達式3是賦值表達式相當于:

if ( a > b )

max = a;

else

max = b;

條件表達式還可以寫成以下形式:

a > b ? printf ( " % d " , a ) : printf ( " % d " , b )

即“表達式2”和“表達式3”不僅可以是數值表達式,還可以是賦值表達式或函數表達式。

上面條件表達式相當于以下if…else語句:

if ( a > b )

printf ( " % d”,a );

else

printf ( " % d”, b );

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

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

相關文章

KWDB創作者計劃—邊緣計算:從概念到落地的技術解讀

引言 隨著物聯網&#xff08;IoT&#xff09;和人工智能&#xff08;AI&#xff09;的快速發展&#xff0c;數據量呈爆炸式增長&#xff0c;傳統的云計算架構逐漸暴露出延遲高、帶寬占用大等問題。邊緣計算作為一種新興的分布式計算范式&#xff0c;正在改變數據處理的方式。本…

藍橋杯基礎算法-遞歸

代碼簡潔&#xff0c;但涉及到的運算&#xff0c;會隨著遞歸層數的增加成指數級增長 路分析&#xff1a;第20行20列位于45度這條線上 這條線上的數字是1 5 13 25 41...兩數之差:4 8 12 16 --->每一個都是在前面的基礎上4&#xff0c;可以用遞歸或者循環 public class dem…

通過學習opencv圖像庫編程借助第三方庫函數完成一個綜合程序設計

通過學習opencv圖像庫編程借助第三方庫函數完成一個綜合程序設計 1) 編譯命令解釋&#xff1a; 編譯命令&#xff1a; gcc test1.cpp -o test1 pkg-config --cflags --libs opencv這條命令包含了以下部分&#xff1a; gcc test1.cpp -o test1: gcc 是 GNU 編譯器集合&#…

第十四屆藍橋杯大賽軟件賽國賽C/C++研究生組

研究生C國賽軟件大賽 題一&#xff1a;混乘數字題二&#xff1a;釘板上的正方形題三&#xff1a;整數變換題四&#xff1a;躲炮彈題五&#xff1a;最大區間 題一&#xff1a;混乘數字 有一點像哈希表&#xff1a; 首先定義兩個數組&#xff0c;拆分ab和n 然后令n a*b 查看兩個…

系統與網絡安全------網絡通信原理(2)

資料整理于網絡資料、書本資料、AI&#xff0c;僅供個人學習參考。 物理層解析 物理層概述 物理層是TCP/IP模型的最底層物理層數據傳輸提供穩定的物理連接 物理層功能 定義設備的物理連接的標準和特性&#xff0c;比如接口形狀&#xff0c;大小定義電氣特性&#xff0c;高低…

內容中臺的數字化管理核心是什么?

數字化整合與系統協同 現代企業的內容管理正經歷從分散式架構向數字化整合的范式轉變。通過將內容管理系統與文檔管理技術深度耦合&#xff0c;組織能夠打破數據孤島&#xff0c;實現跨部門、跨平臺的資源互通。例如&#xff0c;基于元數據分類的標準化體系&#xff0c;不僅提…

Python爬蟲第二戰(使用xpath爬取網站數據)

本文是我在學習過程中記錄學習的點點滴滴&#xff0c;目的是為了學完之后鞏固一下順便也和大家分享一下&#xff0c;日后忘記了也可以方便快速的復習。 使用xpath爬取豬八戒網站數據 前言 前言 今天學習的主要是關于Python使用xpath來爬取豬八戒網的網頁知識的理解和應用 #1.獲…

進程同步和進程互斥的區別

如大家所了解的&#xff0c;進程互斥是由互斥資源引起的&#xff0c;即各進程之間共享互斥資源的使用權&#xff0c;這種競爭沒有確定的必然聯系&#xff0c;哪個進程競爭到互斥資源的使用權&#xff0c;則該資源就歸哪個進程使用&#xff0c;從而獲得所需資源的進程就可以獲得…

ArkTS語言基礎之函數

前言 臭寶們終于來到了ArkTS基礎之函數&#xff0c;今天我們來學習一下ArkTS的函數的相關知識&#xff0c;上一節中也有一些函數的基礎知識。 函數聲明 函數聲明引入一個函數&#xff0c;包含其名稱、參數列表、返回類型和函數體,在下面的例子中&#xff0c;我們聲明了一個名…

redis中的hash

Redis中的hash是什么 Hash: 哈希&#xff0c;也叫散列&#xff0c;是一種通過哈希函數將鍵映射到表中位置的數據結構&#xff0c;哈希函數是關鍵&#xff0c;它把鍵轉換成索引。 Redis Hash&#xff08;散列表&#xff09;是一種 field-value pairs&#xff08;鍵值對&#x…

彈簧質點系統(C++實現)

本文實現一個簡單的物理算法&#xff1a;彈簧質點系統&#xff08;Mass-Spring System&#xff09;。這是一個經典的物理模擬算法&#xff0c;常用于模擬彈性物體&#xff08;如布料、彈簧等&#xff09;的行為。我們將使用C來實現這個算法&#xff0c;并結合鏈表數據結構來管理…

領域大模型

領域技術標準文檔或領域相關數據是領域模型Continue PreTrain的關鍵。 現有大模型在預訓練過程中都會加入書籍、論文等數據&#xff0c;那么在領域預訓練時這兩種數據其實也是必不可少的&#xff0c;主要是因為這些數據的數據質量較高、領域強相關、知識覆蓋率&#xff08;密度…

Wincc項目被鎖定無法打開

Wincc項目被鎖定無法打開 解決方法 解決方法 一般這種情況是因為項目打開的時候直接關機導致的。 刪除項目文件夾的ProjectOpened.lck的文件夾即可 然后即可正常打開項目

SpringBoot3筆記

簡介&#xff1a; springboot整合了springframework&#xff0c;整合了許多配置&#xff0c;讓我們能夠快速創建一個以springframework為基礎的項目。 問題&#xff1a; 到目前為止&#xff0c;你已經學習了多種配置Spring程序的方式。但是無論使用XML、注解、Java配置類還是…

DeepSeek和文心一言的區別

文章目錄 1.開發公司&#xff1a;2.應用場景&#xff1a;3.訓練數據&#xff1a;4.模型架構&#xff1a;5.技術特點&#xff1a;6.語言風格&#xff1a;7.開源性&#xff1a;8.界面與用戶體驗&#xff1a; 1.開發公司&#xff1a; DeepSeek 由杭州深度求索人工智能基礎技術研究…

Windows 10 安裝Mysql 8

安裝準備 下載 MySQL Windows ZIP版&#xff08;無安裝程序&#xff09;&#xff1a; 進入官網&#xff1a;https://dev.mysql.com/downloads/mysql/ 選擇 Windows → 下載 ZIP Archive&#xff0c;例如&#xff1a; mysql-8.0.34-winx64.zip 如果你的電腦沒有安裝 VC Redi…

ARM分揀機vs傳統PLC:實測數據揭示的4倍效率差

在蘇州某新能源汽車零部件倉庫&#xff0c;凌晨3點的分揀線上依然燈火通明。8臺搭載ARM Cortex-A72處理器的智能分揀機正在以每秒3件的速度處理著形狀各異的電池包組件&#xff0c;它們通過MES系統接收訂單信息&#xff0c;自主規劃最優路徑&#xff0c;將不同規格的零部件精準…

使用python訪問mindie部署的vl多模態模型

說明 今天使用mindie1.0部署了qwen2_7b_vl模型&#xff0c;測試過程出現一些問題&#xff0c;這里總結下。 問題1&#xff1a;transformers版本太低 報錯信息&#xff1a; [ERROR] [model_deploy_config.cpp:159] Failed to get vocab size from tokenizer wrapper with ex…

vscode 跳轉失敗之c_cpp_properties.json解析

{"configurations": [{"name": "Linux", // 配置名稱&#xff0c;對應當前平臺&#xff0c;VS Code 中可選"includePath": ["${workspaceFolder}/**", // 包含當前工作區下所有文件夾的頭文件&#xff08;遞歸&…

飛速(FS)解決方案驗證實驗室搬遷升級,賦能客戶技術服務

飛速&#xff08;FS&#xff09;解決方案驗證實驗室近日順利完成搬遷升級&#xff0c;標志著飛速&#xff08;FS&#xff09;在解決方案可行性驗證、質量保障以及定制化需求支持方面邁上新臺階&#xff0c;進一步提升了產品競爭力和客戶信任度。 全新升級的實驗室定位為技術驗證…