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

4.2 使用表達(dá)式

在C語言中,表達(dá)式由運算符和操作數(shù)構(gòu)成,表達(dá)式的運算符指出了對操作數(shù)的操作,操作數(shù)可以是常量、變量或者函數(shù)的調(diào)用,并且表達(dá)式是用來構(gòu)成語句的基本單位。本節(jié)就來介紹表達(dá)式的使用。

4.2.1 算術(shù)表達(dá)式

由算術(shù)運算符和操作數(shù)組成的表達(dá)式稱為算術(shù)表達(dá)式,算術(shù)表達(dá)式的結(jié)合性為自左向右。常用的算術(shù)表達(dá)式使用說明,如表4-10所示。

表4-10 算術(shù)表達(dá)式的描述

【例4.9】編寫程序,定義int型變量a、b、c,初始化a的值為10,初始化b的值為20,使用算術(shù)表達(dá)式對a和b進(jìn)行運算,將計算結(jié)果分別賦予c再輸出(源代碼\ch04\4.9.txt)。

圖4-9 例4.9的程序運行結(jié)果

程序運行結(jié)果如圖4-9所示。

在使用算術(shù)表達(dá)式的過程中,應(yīng)該注意以下幾點:

(1)在算術(shù)表達(dá)式中,如果操作數(shù)的類型不一致,系統(tǒng)會自動進(jìn)行隱式轉(zhuǎn)換,如果轉(zhuǎn)換成功,表達(dá)式的結(jié)果類型以操作數(shù)中表示范圍大的類型為最終類型。

(2)減法運算符的使用同數(shù)學(xué)中的使用方法類似,但需要注意的是,減法運算符不但可以應(yīng)用于整型、浮點型數(shù)據(jù)間的運算,還可以應(yīng)用于字符型的運算。在字符型運算時,首先將字符轉(zhuǎn)換為其ASCII碼值,然后進(jìn)行減法運算。

(3)在使用除法運算符時,如果除數(shù)與被除數(shù)均為整數(shù),則結(jié)果也為整數(shù),它會把小數(shù)舍去(并非四舍五入),如3/2=1。

4.2.2 賦值表達(dá)式

由賦值運算符和操作數(shù)組成的表達(dá)式稱為賦值表達(dá)式,賦值表達(dá)式的功能是計算表達(dá)式的值再賦予左側(cè)的變量。賦值表達(dá)式的一般形式如下:

     變量 賦值運算符 表達(dá)式

賦值表達(dá)式的計算過程是:首先計算表達(dá)式的值,然后將該值賦給左側(cè)的變量。C語言中常見賦值表達(dá)式以及使用說明,如表4-11所示。

表4-11 常見賦值表達(dá)式以及使用說明

【例4.10】編寫程序,定義整型變量x、y,使用賦值表達(dá)式對x進(jìn)行相應(yīng)的運算操作,然后將結(jié)果賦予y輸出(源代碼\ch04\4.10.txt)。

圖4-10 例4.10的程序運行結(jié)果

程序運行后的結(jié)果如圖4-10所示。

在使用賦值表達(dá)式的過程中,應(yīng)該注意以下幾點:

(1)賦值的左操作數(shù)必須是一個變量,C語言中可以對變量進(jìn)行連續(xù)賦值,這時賦值運算符是右關(guān)聯(lián)的,這意味著從右向左運算符被分組。例如,形如a=b=c的表達(dá)式等價于a=(b=c)。

(2)如果賦值運算符兩邊的操作數(shù)類型不一致,如果存在隱式轉(zhuǎn)換,系統(tǒng)會自動將賦值運算符右邊的類型轉(zhuǎn)換為左邊的類型再賦值;如果不存在隱式轉(zhuǎn)換,那就先要進(jìn)行顯式類型轉(zhuǎn)換,否則程序會報錯。

4.2.3 關(guān)系表達(dá)式

由關(guān)系運算符和操作數(shù)構(gòu)成的表達(dá)式稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式中的操作數(shù)可以是整型數(shù)、實型數(shù)、字符型等。對于整數(shù)類型、實數(shù)類型和字符類型,六種關(guān)系運算符都適用;對于字符串的關(guān)系運算符實際上只能使用==和!=運算符。關(guān)系表達(dá)式的格式如下:

     表達(dá)式 關(guān)系運算符 表達(dá)式

例如:

     3>2
     z>x-y
     'a'+2<d
     a>(b>c)
     a!=(c==d)
     "abc"!="asf"

☆大牛提醒☆

兩個字符串值都為null或兩個非空字符串長度相同、對應(yīng)的字符序列也相同的情況下比較的結(jié)果才能為“真”。

關(guān)系表達(dá)式的返回值只有“真”與“假”兩種,分別用“1”和“0”來表示,例如:

     2>1 的返回值為“真”,也就是“1”
     (a+b)==(c=5)的返回值為“假”,也就是“0”

【例4.11】編寫程序,通過輸入端輸入一個字符,使用關(guān)系表達(dá)式判斷該字符是字母還是數(shù)字(源代碼\ch04\4.11.txt)。

保存并運行程序,如果輸入數(shù)值,則返回如圖4-11所示的結(jié)果;如果輸入一個字符,則返回如圖4-12所示的結(jié)果。

圖4-11 輸入數(shù)字的反饋信息

圖4-12 輸入字母的反饋信息

4.2.4 邏輯表達(dá)式

由邏輯運算符和操作數(shù)組成的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的結(jié)果只能是真與假,要么是“1”要么是“0”。邏輯表達(dá)式的書寫形式一般為:

     表達(dá)式 邏輯運算符 表達(dá)式

例如,表達(dá)式a&&b,其中a和b均為布爾值,系統(tǒng)在計算該邏輯表達(dá)式時,首先判斷a的值,如果a為true,再判斷b的值,如果a為false,系統(tǒng)不需要繼續(xù)判斷b的值,直接確定表達(dá)式的結(jié)果為false。

雖然在C語言中,以“1”表示“真”,以“0”表示“假”,但是反過來在判斷一個量是“真”或是“假”時,是以“0”代表“假”,以非“0”的數(shù)字代表“真”。

例如:

     2&&3

由于“2”和“3”均非“0”,所以表達(dá)式的返回值為“真”,即為“1”。

【例4.12】編寫程序,分別定義字符型變量s并初始化為“z”,整型變量a、b、c并初始化為1、2、3,浮點型變量x、y并初始化為2e+5、3.14。輸出由它們所組合的相應(yīng)邏輯表達(dá)式的返回值(源代碼\ch04\4.12.txt)。

程序運行結(jié)果如圖4-13所示。

圖4-13 例4.12的程序運行結(jié)果

4.2.5 位運算表達(dá)式

由位運算符和操作數(shù)構(gòu)成的表達(dá)式為位運算表達(dá)式。在位運算表達(dá)式中,系統(tǒng)首先將操作數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),然后再進(jìn)行位運算,計算完畢后,再將其轉(zhuǎn)換為十進(jìn)制整數(shù)。各種位運算方法,如表4-12所示。這里假設(shè)操作數(shù)1為8,操作數(shù)2為3。

表4-12 位運算符表達(dá)式

【例4.13】編寫程序,定義整型變量a、b,并初始化為20、15;定義int型變量c并初始化為0。對a、b進(jìn)行相關(guān)位運算操作,將結(jié)果賦予變量c并輸出(源代碼\ch04\4.13.txt)。

程序運行結(jié)果如圖4-14所示。

圖4-14 例4.13的程序運行結(jié)果

4.2.6 條件表達(dá)式

由條件運算符和操作數(shù)組成的表達(dá)式稱為條件表達(dá)式。條件表達(dá)式的一般形式如下:

     條件表達(dá)式?表達(dá)式1:表達(dá)式2

條件表達(dá)式的計算過程是先計算條件,然后進(jìn)行判斷。如果條件表達(dá)式的結(jié)果為“真”,計算表達(dá)式1的值,表達(dá)式1為整個條件表達(dá)式的值;否則,計算表達(dá)式2的值,表達(dá)式2為整個條件表達(dá)式的值。例如,求出a和b中最大數(shù)的表達(dá)式。

     a>b?a:b   //取a和b的最大值

條件運算符的優(yōu)先級高于賦值運算符,低于關(guān)系運算符和算術(shù)運算符。所以有:

     (a>b)?a:b 等價于a>b?a:b

條件運算符的結(jié)合性規(guī)則是自右向左,例如:

     a>b?a:c<d?c:d 等價于a>b?a:(c<d?c:d)

注意:在條件運算符中?與:是一對運算符,不可拆開使用。

【例4.14】編寫程序,定義兩個整型變量,通過輸入端輸入兩數(shù)的值,再使用條件表達(dá)式比較它們的大小,將較大數(shù)輸出(源代碼\ch04\4.14.txt)。

程序運行結(jié)果如圖4-15所示。

圖4-15 例4.14的程序運行結(jié)果

4.2.7 逗號表達(dá)式

逗號運算符的功能是將兩個表達(dá)式連接起來成為一個表達(dá)式,這就是逗號表達(dá)式。逗號表達(dá)式的一般形式為:

     表達(dá)式1,表達(dá)式2

逗號表達(dá)式的運算方式為分別對兩個表達(dá)式進(jìn)行求解,然后以表達(dá)式2的計算結(jié)果作為整個逗號表達(dá)式的值。在逗號表達(dá)式中可以使用嵌套的形式,例如:

     表達(dá)式1,(表達(dá)式2,表達(dá)式3…表達(dá)式n)

將上述逗號表達(dá)式展開可以得到:

     表達(dá)式1,表達(dá)式2,表達(dá)式3…表達(dá)式n

那么表達(dá)式n便為整個逗號表達(dá)式的值。

【例4.15】編寫程序,定義整型變量a,b,c,x,y。對a,b,c進(jìn)行初始化,它們的值分別為1,2,3,然后計算逗號表達(dá)式y(tǒng)=(x=a+b, a+c),最后輸出x,y的值(源代碼\ch04\4.15.txt)。

程序運行結(jié)果如圖4-16所示。

圖4-16 例4.15的程序運行結(jié)果

主站蜘蛛池模板: 安远县| 嘉定区| 岐山县| 龙江县| 绥阳县| 合江县| 库伦旗| 丹凤县| 林口县| 平南县| 广东省| 界首市| 剑河县| 浦江县| 邹城市| 桑日县| 铜川市| 科技| 昭通市| 襄汾县| 和静县| 濮阳县| 石楼县| 揭东县| 莎车县| 崇仁县| 武定县| 孟连| 赤峰市| 木兰县| 怀宁县| 祥云县| 五常市| 乐平市| 连江县| 龙岩市| 蒙自县| 金川县| 石首市| 柳林县| 朝阳市|