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

2.3 常用的運(yùn)算符和表達(dá)式

學(xué)習(xí)目標(biāo)

1)掌握幾種常用運(yùn)算符。

2)掌握由運(yùn)算符和數(shù)據(jù)構(gòu)成的表達(dá)式的運(yùn)算過程。

3)熟練掌握常用運(yùn)算符的優(yōu)先級別關(guān)系。

實(shí)例8

實(shí)例8運(yùn)算符及表達(dá)式——輸出各表達(dá)式的結(jié)果

實(shí)例任務(wù)

定義一些變量,并用運(yùn)算符構(gòu)成各種不同類型的表達(dá)式,輸出各個表達(dá)式的值。程序運(yùn)行結(jié)果如圖2-8所示。

圖2-8 程序運(yùn)行結(jié)果

程序代碼

相關(guān)知識

1.算術(shù)運(yùn)算符和算術(shù)運(yùn)算表達(dá)式

常用的算術(shù)運(yùn)算符有以下幾種。

1)加法運(yùn)算符“+”:雙目運(yùn)算符,即應(yīng)有兩個量參與加法運(yùn)算。如x1+x1,4+8等,它具有右結(jié)合性。

2)減法運(yùn)算符“-”:雙目運(yùn)算符。但“-”也可作為負(fù)值運(yùn)算符,此時為單目運(yùn)算,如-x,-5等,它具有左結(jié)合性。

3)乘法運(yùn)算符“*”:雙目運(yùn)算符,如表達(dá)式x1*x2,它具有左結(jié)合性。

4)除法運(yùn)算符“/”:雙目運(yùn)算符,具有左結(jié)合性。參與運(yùn)算量均為整型時,結(jié)果為兩數(shù)整除的商,為整型,舍去小數(shù)。如果運(yùn)算量中有一個是實(shí)型,則結(jié)果為雙精度實(shí)型,運(yùn)算結(jié)果為數(shù)學(xué)上相除的實(shí)型結(jié)果。

5)取余運(yùn)算符(求模運(yùn)算符)“%”:雙目運(yùn)算符,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)整除后的余數(shù)。

由算術(shù)運(yùn)算符和數(shù)據(jù)一起構(gòu)成的式子,是算術(shù)表達(dá)式。數(shù)學(xué)上的一些表達(dá)式,在C語言中書寫時要符合一定的書寫規(guī)范。例如:要寫成表達(dá)式sqrt(abs(x))/2。

2.自增自減運(yùn)算

自增1運(yùn)算符記為“++”,其功能是使變量的值自增1。自減1運(yùn)算符記為“--”,其功能是使變量的值自減1。自增1運(yùn)算符和自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性。它們有以下幾種形式。

1)++i。i自增1后再參與其他運(yùn)算。

2)--i。i自減1后再參與其他運(yùn)算。

3)i++。i參與運(yùn)算后,i的值再自增1。

4)i--。i參與運(yùn)算后,i的值再自減1。

但是++和--僅能用于變量,不能用于常量或表達(dá)式。如(i+j)--或6++、(-i)++、(-i)--是不合法的。

如果i的原值為5,那么-i--就應(yīng)相當(dāng)于-(i--),整個表達(dá)式的輸出結(jié)果為-5,i的值再自減1為4。

當(dāng)遇到如a+++b這樣的表達(dá)式時,C編譯處理原則是盡可能多地(自左而右)將若干個字符組成一個運(yùn)算符,因此a+++b等價于(a++)+b。

3.賦值運(yùn)算符與賦值運(yùn)算表達(dá)式

賦值運(yùn)算符號為“=”,它的作用是將一個數(shù)據(jù)或表達(dá)式的值賦給一個變量。由“=”連接的式子稱為賦值表達(dá)式,其一般形式為:

需要說明的是,有時“=”兩側(cè)的數(shù)據(jù)類型不一致,在賦值時要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。具體處理過程如下。

1)將實(shí)型值賦予整型變量時,舍去小數(shù)部分。

2)將整型值賦予實(shí)型變量時,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。

3)將字符型值賦予整型變量時,由于字符型數(shù)據(jù)長度為1字節(jié),而整型數(shù)據(jù)長度為2字節(jié),故將字符的ASCII碼值放到整型變量的低八位中,高八位為0。

4)將整型值賦予字符型變量時,只把低八位賦予字符型變量。

4.復(fù)合賦值運(yùn)算符

在賦值符“=”之前加上其他雙目運(yùn)算符可構(gòu)成復(fù)合賦值運(yùn)算符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=,如a1+=4等價于a1=a1+4。

賦值運(yùn)算符都是自右向左執(zhí)行的。C采用復(fù)合賦值運(yùn)算符,一是為了簡化程序,使程序精煉,二是為了提高編譯效率。

5.逗號運(yùn)算符

C語言提供一種用逗號運(yùn)算符“,”連接起來的式子,稱為逗號表達(dá)式。它的構(gòu)成形式為:

執(zhí)行時,按表達(dá)式1、表達(dá)式2、……、表達(dá)式n的順序依次運(yùn)算,最后的表達(dá)式n的值即為整個逗號表達(dá)式的值。例如,逗號表達(dá)式“a = 3*5, a*4”的值為60。即先求解a=3 × 5,得a=15;再求a× 4=60。

實(shí)例9

實(shí)例9 關(guān)系運(yùn)算符、邏輯運(yùn)算符和表達(dá)式——關(guān)系運(yùn)算和邏輯運(yùn)算的結(jié)果

實(shí)例任務(wù)

定義變量,并對其進(jìn)行關(guān)系運(yùn)算和邏輯運(yùn)算,輸出運(yùn)算結(jié)果。程序運(yùn)行結(jié)果如圖2-9所示。

程序代碼

圖2-9 程序運(yùn)行結(jié)果

相關(guān)知識

1.關(guān)系運(yùn)算符和關(guān)系運(yùn)算表達(dá)式

關(guān)系運(yùn)算符又稱為比較運(yùn)算符,其作用是對操作數(shù)進(jìn)行比較運(yùn)算,以判斷給定的兩個操作數(shù)之間是否符合給定的關(guān)系。如符合,結(jié)果為1;如不符合,結(jié)果為0。

由關(guān)系運(yùn)算符連接起來的式子,稱為關(guān)系表達(dá)式。在程序設(shè)計過程中,關(guān)系表達(dá)式主要用在程序中的判斷語句。C語言中的6種關(guān)系運(yùn)算符及其運(yùn)算規(guī)則如表2-4所示。

表2-4 關(guān)系運(yùn)算符及其運(yùn)算規(guī)則

2.邏輯運(yùn)算符及邏輯運(yùn)算表達(dá)式

關(guān)系運(yùn)算只能對單一條件進(jìn)行判斷,如a>b等。如果要在一條語句中對多個條件進(jìn)行判斷,就需要用邏輯運(yùn)算。常用的邏輯運(yùn)算有與、或、非,對應(yīng)的運(yùn)算符號是&&、||、!。其中非運(yùn)算為單目運(yùn)算符,用于對符號后的值進(jìn)行取反操作。

由邏輯運(yùn)算符連接起來的式子稱為邏輯運(yùn)算表達(dá)式。它的運(yùn)算結(jié)果為真時,值為1;運(yùn)算結(jié)果為假時,值為0。C語言中,常用的3種邏輯運(yùn)算符及其運(yùn)算規(guī)則和優(yōu)先級如表2-5所示。

表2-5 邏輯運(yùn)算符及其運(yùn)算規(guī)則和優(yōu)先級

實(shí)例10運(yùn)算符的優(yōu)先級——復(fù)雜表達(dá)式的運(yùn)算結(jié)果

實(shí)例任務(wù)

定義3個變量,然后組合成復(fù)雜表達(dá)式,要求輸出各表達(dá)式的值。程序運(yùn)行結(jié)果如圖2-10所示。

實(shí)例10

圖2-10 程序運(yùn)行結(jié)果

程序代碼

相關(guān)知識

1.運(yùn)算符的優(yōu)先級與結(jié)合性

C語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。優(yōu)先級是指當(dāng)一個表達(dá)式中有多個運(yùn)算符并存時,并非從左至右依次執(zhí)行,而是按各運(yùn)算符的優(yōu)先級的順序執(zhí)行。

所謂結(jié)合性是指當(dāng)一個操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級時,該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符(在第3章中學(xué)習(xí))是右結(jié)合性外,其他運(yùn)算符都是左結(jié)合性。

2.常用運(yùn)行符的分類及結(jié)合性

C語言的運(yùn)算符比較豐富,常用運(yùn)算符的優(yōu)先級和結(jié)合性如表2-6所示。

表2-6 常用運(yùn)算符的優(yōu)先級和結(jié)合性

課堂精練

1)定義變量,要求輸出一些表達(dá)式的結(jié)果。程序運(yùn)行結(jié)果如圖2-11所示。

根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。

2)定義變量,并進(jìn)行自加和自減運(yùn)算。程序運(yùn)行結(jié)果如圖2-12所示。

圖2-11 程序運(yùn)行結(jié)果(1)

圖2-12 程序運(yùn)行結(jié)果(2)

根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。

主站蜘蛛池模板: 黎平县| 榆树市| 邵阳县| 通江县| 辽宁省| 桓仁| 大渡口区| 达孜县| 康定县| 衡南县| 高邑县| 安仁县| 陵水| 章丘市| 保定市| 临桂县| 丰镇市| 荥阳市| 托里县| 新晃| 岢岚县| 绍兴县| 金阳县| 达拉特旗| 湖北省| 体育| 东海县| 东安县| 北海市| 阳朔县| 察哈| 平罗县| 斗六市| 富民县| 罗源县| 吉安县| 垦利县| 梁平县| 德安县| 海伦市| 牡丹江市|