- C程序設(shè)計(jì)語(yǔ)言
- 魏東平 朱連章 于廣斌編著
- 620字
- 2018-12-29 14:37:50
4.4 條件運(yùn)算符和條件運(yùn)算表達(dá)式
條件運(yùn)算符“? :”要求有3個(gè)運(yùn)算對(duì)象,稱為三目運(yùn)算符,用于構(gòu)造條件運(yùn)算表達(dá)式,其一般形式為:
表達(dá)式e1?表達(dá)式e2:表達(dá)式e3
其中,表達(dá)式e1是一個(gè)關(guān)系表達(dá)式或邏輯表達(dá)式,結(jié)果是邏輯值“真”或“假”。表達(dá)式e2、e3可以是任意表達(dá)式。
條件運(yùn)算表達(dá)式的執(zhí)行過(guò)程是:先求解表達(dá)式e1;若e1為真(非0),則計(jì)算表達(dá)式e2,并將e2的結(jié)果作為整個(gè)條件表達(dá)式的結(jié)果;若e1為假(0),則計(jì)算表達(dá)式e3,并將e3的結(jié)果作為整個(gè)條件表達(dá)式的結(jié)果。
例如,假設(shè)x已聲明為整型變量,并初始化為1,則表達(dá)式:
x>0?10:-10
的結(jié)果為10。如果x初始化為-1,則結(jié)果是-10。
可以把條件運(yùn)算理解為對(duì)if-else語(yǔ)句的簡(jiǎn)化,例如,語(yǔ)句:
y=(a>b)?a:b;
與下面的if語(yǔ)句等價(jià):
if(a>b)y=a; else y=b;
關(guān)于條件運(yùn)算表達(dá)式,需要注意:
① 表達(dá)式e1、e2、e3的類型可以不同。如果e2和e3的類型不同,則整個(gè)表達(dá)式的結(jié)果的類型為二者中級(jí)別較高的類型。
例如,表達(dá)式:
a>b?10.0:-10
的類型是實(shí)型。也就是說(shuō),如果a>b成立,則整個(gè)表達(dá)式的值是10.0;如果a>b不成立,則整個(gè)表達(dá)式的值是實(shí)數(shù)-10.0,而不是整數(shù)-10。
② 條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符而低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符。
例如,表達(dá)式:
x=(a<b)?b:(a+1)
可以寫成
x=a<b?b:a+1
③ 條件運(yùn)算符具有右結(jié)合性,例如,下面的兩個(gè)表達(dá)式是等價(jià)的:
a>b?c:d>e?f:g 等價(jià)于 a>b?c:(d>e?f:g)
如果a=1、b=2、c=3、d=4、e=5、f=6、g=7,則整個(gè)表達(dá)式的值為7。
【例4.8】 從鍵盤上輸入任意一個(gè)字符,如果它是大寫字母,則把它轉(zhuǎn)換成小寫字母輸出,否則不做轉(zhuǎn)化,直接輸出。
分析:輸入的字符只要在'A'和'Z'之間,就是大寫字母,再加上32即可轉(zhuǎn)換成小寫字母。
程序如下:
1 #include<stdio.h> 2 void main() 3 { char ch; 4 printf("Input a character:"); 5 scanf("%c",&ch); 6 ch=(ch>='A' && ch<='Z')?(ch+32):ch; 7 printf("=>%c\n",ch); 8 }
- 經(jīng)濟(jì)學(xué)基礎(chǔ)學(xué)習(xí)指導(dǎo)(第二版)
- 網(wǎng)店運(yùn)營(yíng)實(shí)務(wù)(第3版·慕課版)
- 材料科學(xué)基礎(chǔ)
- 針織服裝結(jié)構(gòu)與工藝
- 化學(xué)反應(yīng)工程學(xué) 第二版
- 工程結(jié)構(gòu)抗震設(shè)計(jì)
- InDesign CS6核心應(yīng)用案例教程(全彩慕課版)
- C++語(yǔ)言從入門到精通(視頻實(shí)戰(zhàn)版)
- 邊用邊學(xué)Office 2010辦公應(yīng)用
- 監(jiān)理工程師《建設(shè)工程監(jiān)理基本理論與相關(guān)法規(guī)》歷年真題與模擬試題詳解
- 思想道德修養(yǎng)與法律基礎(chǔ)“5G”體驗(yàn)式教程
- 新編大學(xué)語(yǔ)文教程
- 東北財(cái)經(jīng)大學(xué)公共管理學(xué)院804社會(huì)學(xué)研究方法歷年考研真題及詳解
- 會(huì)計(jì)學(xué)(第二版)
- 針織服裝藝術(shù)設(shè)計(jì)(第2版)