官术网_书友最值得收藏!

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   }
主站蜘蛛池模板: 浦县| 固阳县| 河北省| 蕉岭县| 宣汉县| 宝应县| 青海省| 鄂伦春自治旗| 荆州市| 蓬安县| 钟祥市| 毕节市| 长岛县| 尚义县| 拜城县| 奎屯市| 和政县| 大田县| 梁河县| 太谷县| 读书| 濉溪县| 乐陵市| 宝应县| 如东县| 泰宁县| 安远县| 都昌县| 澎湖县| 达尔| 廉江市| 嘉荫县| 尼木县| 莱州市| 永寿县| 禹城市| 台北市| 鹤山市| 宣城市| 曲周县| 定安县|