C 語(yǔ)言條件運(yùn)算符詳細(xì)講解
如果希望獲得兩個(gè)數(shù)中最大的一個(gè),可以使用 if 語(yǔ)句,例如:
if(a>b){
max = a;
}else{
max = b;
}
不過(guò),C語(yǔ)言提供了一種更加簡(jiǎn)單的方法,叫做條件運(yùn)算符,語(yǔ)法格式為:
表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3
條件運(yùn)算符是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符,其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2 的值作為整個(gè)條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。條件表達(dá)式通常用于賦值語(yǔ)句之中。
上面的 if else 語(yǔ)句等價(jià)于:
max = (a>b) ? a : b;
該語(yǔ)句的語(yǔ)義是:如a>b為真,則把a(bǔ)賦予max,否則把b 賦予max。讀者可以認(rèn)為條件運(yùn)算符是一種簡(jiǎn)寫(xiě)的 if else,完全可以用 if else 來(lái)替換。
使用條件表達(dá)式時(shí),還應(yīng)注意以下幾點(diǎn):
1) 條件運(yùn)算符的優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值符。因此
max=(a>b) ? a : b;
可以去掉括號(hào)而寫(xiě)為
max=a>b ? a : b;
2) 條件運(yùn)算符?和:是一對(duì)運(yùn)算符,不能分開(kāi)單獨(dú)使用。
3) 條件運(yùn)算符的結(jié)合方向是自右至左。例如:
a>b ? a : c>d ? c : d;
應(yīng)理解為:
a>b ? a : ( c>d ? c : d );
這也就是條件表達(dá)式嵌套的情形,即其中的表達(dá)式又是一個(gè)條件表達(dá)式。
用條件表達(dá)式重新編程,輸出兩個(gè)數(shù)中的最大值:
#include <stdio.h>
int main(){
int a, b;
printf("Input two numbers:");
scanf("%d %d", &a, &b);
printf("max=%d\n", a>b?a:b);
return 0;
}
運(yùn)行結(jié)果:
Input two numbers:23 45
max=45
以上就是對(duì)C語(yǔ)言的條件運(yùn)算符知識(shí)的講解,有需要的朋友可以參考下。
相關(guān)文章
C++實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)和相應(yīng)的猜拳小游戲?qū)嵗a
C++中沒(méi)有自帶的random函數(shù),要實(shí)現(xiàn)隨機(jī)數(shù)的生成就需要使用rand()和srand()。下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)和相應(yīng)的猜拳小游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09
C語(yǔ)言實(shí)現(xiàn)銀行管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
C語(yǔ)言實(shí)現(xiàn)散列表(哈希Hash表)實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)散列表(哈希Hash表)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
C++ API功能設(shè)計(jì)的實(shí)現(xiàn)
C++ API中看似很小的修改,都可能會(huì)影響到生成的對(duì)象和庫(kù)文件的二進(jìn)制表示,如果客戶(hù)想替換共享庫(kù)使之工作,就不能簡(jiǎn)單的替換庫(kù)文件了事,而往往需要重新編譯2022-08-08
C/C++讀寫(xiě)JSON數(shù)據(jù)的詳細(xì)過(guò)程記錄
JSON文件無(wú)論是在web開(kāi)發(fā)、客戶(hù)端開(kāi)發(fā)、服務(wù)端等開(kāi)發(fā)中都是應(yīng)用比較廣泛的的第一種輕量級(jí)數(shù)據(jù)交換格式,非常方便閱讀和編寫(xiě),下面這篇文章主要給大家介紹了關(guān)于C/C++讀寫(xiě)JSON數(shù)據(jù)的詳細(xì)過(guò)程,需要的朋友可以參考下2023-04-04
C語(yǔ)言素?cái)?shù)(質(zhì)數(shù))判斷的3種方法舉例
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言素?cái)?shù)(質(zhì)數(shù))判斷的3種方法,質(zhì)數(shù)是只能被1或者自身整除的自然數(shù)(不包括1),稱(chēng)為質(zhì)數(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
c++利用stl set_difference對(duì)車(chē)輛進(jìn)出區(qū)域進(jìn)行判定
這篇文章主要介紹了set_difference,用于求兩個(gè)集合的差集,結(jié)果集合中包含所有屬于第一個(gè)集合但不屬于第二個(gè)集合的元素,需要的朋友可以參考下2017-03-03

