C++ C語言 簡單的算術(shù)運(yùn)算和表達(dá)式(教學(xué))_第1頁
C++ C語言 簡單的算術(shù)運(yùn)算和表達(dá)式(教學(xué))_第2頁
C++ C語言 簡單的算術(shù)運(yùn)算和表達(dá)式(教學(xué))_第3頁
C++ C語言 簡單的算術(shù)運(yùn)算和表達(dá)式(教學(xué))_第4頁
C++ C語言 簡單的算術(shù)運(yùn)算和表達(dá)式(教學(xué))_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第三章 簡單算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 C語言提供了23種運(yùn)算符,在這章內(nèi)只介紹算術(shù)運(yùn)算符和增1、減1運(yùn)算符及強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,其余的將在以后的授課中逐一介紹。3.1 C運(yùn)算符和表達(dá)式3.2 宏常量與宏替換3.3 const 常量3.4 自動類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換3.5 常用標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)3.6 小結(jié)3.1 C運(yùn)算符和表達(dá)式3.1.1 基本的算術(shù)運(yùn)算符和表達(dá)式1、基本的算術(shù)運(yùn)算符+ 、 加號運(yùn)算符、 減號運(yùn)算符、 乘號運(yùn)算符、 除號運(yùn)算符、 模運(yùn)算符,或叫作求余運(yùn)算符 說 明 如果參加、運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是doubledouble型,因?yàn)樗袑?shí)數(shù)都 按dou

2、bledouble型進(jìn)行運(yùn)算。、模運(yùn)算符,或叫作求余運(yùn)算符。注意:% % 運(yùn)算要求運(yùn)算符兩的運(yùn)算對象均為整型運(yùn)算要求運(yùn)算符兩的運(yùn)算對象均為整型2 2、算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性、算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性 所謂算術(shù)表達(dá)式即:用算術(shù)運(yùn)算符和括號將用算術(shù)運(yùn)算符和括號將運(yùn)算對象連接起來、符合運(yùn)算對象連接起來、符合C C語法規(guī)則的式子。語法規(guī)則的式子。其中運(yùn)算包括常量、變量、函數(shù)等。優(yōu)先級結(jié)合性 有關(guān)結(jié)合性的問題將會在以后進(jìn)行詳細(xì)的說明。參見附錄C C運(yùn)算符的優(yōu)先級與結(jié)合性3.1.2 復(fù)合運(yùn)算符 設(shè)變量a都被定義為整型變量,并給變量a賦了初值10。這句話要用程序表示如下左圖所示。若要想

3、將變量a的值加20,其表達(dá)式的寫有兩種:使用一般形式(如下中圖所示);使用復(fù)合運(yùn)算符方式(如下右圖所示)int a, b;a = 10;或:int a = 10, b;a = a + 20a += 20這兩個(gè)表達(dá)式作用相同,其他算術(shù)運(yùn)算符的復(fù)合用法依次類推3.1.3 3.1.3 自增、自減運(yùn)算符自增、自減運(yùn)算符 所謂增、自減的作用是使變量的值增1或減1。i +, i - 在調(diào)用i之后,再使i的值加或減1+ i , - i 在調(diào)用i之前,先使i的值加或減1。 粗略地看,i+和+i 的作用均相當(dāng)于i = i + 1,但+i和i+不同之處在于: int main(void) int i = 3;pr

4、intf(“first i= %d”, + i);printf(“second i= %d”, i+);printf(“third i= %d”, i);return 0;編輯、編譯、鏈接此程序,并運(yùn)行它,從輸出結(jié)果分析和理解+i和i+的區(qū)別。有關(guān)自增、自減的說明有關(guān)自增、自減的說明 自增運(yùn)算符和自減運(yùn)算符 只能用于只能用于變量變量。 + 和-的結(jié)合方向是“自右至左自右至左”。有關(guān)自增、自減的補(bǔ)充 1int main(void)int x,i=3; x=(i+)+(i+)+(i+); printf(x=%d i=%d,x,i);結(jié)果為:結(jié)果為:x=9 i=6x=9 i=6int main(vo

5、id)int x,i=3; x=(+i)+(+i)+(+i); printf(x=%d i=%d,x,i);結(jié)果為:結(jié)果為:x=18 i=6 以上為自增在賦值表達(dá)式中的運(yùn)算結(jié)果,要注意 左面由于是后+,先提取i的原值相加,即3+3+3得9。而右面是先+,故先得i為6,再6+6+6得18 i為6的時(shí)刻,左面i是在做完賦值后變?yōu)?的,而右面i是在賦值前已變?yōu)?了。有關(guān)自增、自減的補(bǔ)充 2main()int i=3; printf(%d,(i+)+(i+)+(i+); 結(jié)果為:12main()int i=3; printf(%d,(+i)+(+i)+(+i); 結(jié)果為:15 以上為自增在函數(shù)參數(shù)中的

6、運(yùn)算結(jié)果。以上兩程序都在第一個(gè)printf后再一句printf(“i=%d”,i);則顯示i=?3.2 宏常量與宏替換 另外可用一個(gè)標(biāo)識符代表一個(gè)常量,其定義方式如下: 以后在程序中凡遇到PRICE都代表30。 PRICE就稱為符號常量(宏常量)。在程序中將PRICE替換成30的這個(gè)動作叫“宏替換”。3.3 const 3.3 const 常量常量 使用宏常量的最大問題是,宏常量沒有數(shù)據(jù)類型。編譯器對宏常量不進(jìn)行類型檢查,只進(jìn)行簡單的字符替換,字符替換時(shí)極易產(chǎn)生意想不到的錯(cuò)誤。 那么可否聲明具有某種數(shù)據(jù)類型的常量呢?在這里將介紹const常量。 在聲明語句中,只要將const類型修飾置于類型說

7、明之前,就可將類型說明后的標(biāo)識符聲明為具有該類型的const常量了。 由于編譯器將其放在只讀存儲區(qū),不允許在程序中改變其值,因此const常量只能在定義時(shí)賦值。例如: const double PAI = 3.1415926; 聲明了名為PAI的實(shí)型const常量,其值為3.1415926。 具體理解參見教材P34 高 double float long 低 int char, short 圖中橫向向左的箭頭表示橫向向左的箭頭表示必定的轉(zhuǎn)換必定的轉(zhuǎn)換,如字符數(shù)據(jù)必定先轉(zhuǎn)換為整數(shù),float型數(shù)據(jù)在運(yùn)算時(shí)一律先轉(zhuǎn)換成雙精度型,以提高運(yùn)算精度。 即使是兩個(gè)floatfloat型數(shù)據(jù)相加,也先都化為

8、doubledouble型,然后再相加。的箭頭表示當(dāng)前運(yùn)算對象為不同類型時(shí)轉(zhuǎn)換的方向的箭頭表示當(dāng)前運(yùn)算對象為不同類型時(shí)轉(zhuǎn)換的方向。例intint 型與doubledouble型數(shù)據(jù)進(jìn)行運(yùn)算,先將intint 型的數(shù)據(jù)轉(zhuǎn)換成doubledouble,然后再進(jìn)行運(yùn)算。3.4 自動類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換自動類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換類型轉(zhuǎn)換類型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。 實(shí)型數(shù)據(jù)賦給整型變量 整型數(shù)據(jù)賦給單、雙精度變量 double型數(shù)據(jù)賦給float變量 字符型數(shù)據(jù)賦給整型變量 int、long型數(shù)據(jù)賦給一個(gè)char變量注意:這里指的是系統(tǒng)自動

9、進(jìn)行轉(zhuǎn)換(需解釋)。強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。例如: (double)a(double)a (將a轉(zhuǎn)換成double類型) (int)(x+y)(int)(x+y) (將x+y的值轉(zhuǎn)換成整型) (float)(5%4)(float)(5%4) (將54的值轉(zhuǎn)換成float型)其一般形式為:(類型名)(表達(dá)式)(類型名)(表達(dá)式)表達(dá)式應(yīng)該用括號括起來。如果寫成(int)x+y(int)x+y 則只將x x轉(zhuǎn)換成整型,然后與y y相加。說說 明明 在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需要類型的中間變量,原來的變量的類型未

10、發(fā)生變化。如: (int) x(int) x (不要寫成int(x)int(x)如果x x原指定為floatfloat型,進(jìn)行強(qiáng)制類型運(yùn)算后得到一個(gè)intint型的中間變量,它的值等于x x的整數(shù)部分,而x x類型不變(仍為floatfloat型)。例 強(qiáng)制類型轉(zhuǎn)換 int main(main(void) ) float x; x; int i; i; x = 3.14;x = 3.14; i = (i = (int)x;)x;printf(printf(“x=%f,i=%dx=%f,i=%d”,x,i);,x,i);return 0; 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:x=3.149000 i=3x

11、=3.149000 i=3X類型仍為float,值仍為3.14#include /標(biāo)準(zhǔn)輸入輸出頭文件#include /標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)頭文件int main(void)double a, b, c, s, area;a = 3;b = 4;c = 5;s = (a + b + c) / 2; /能否寫成1/2* (a + b + c) area = sqrt(s * (s - a) * (s - b) * (s - c);printf(area = %fn, area);return 0; 3.5 常用標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)參見教材P38注意:當(dāng)在程序中使用標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)據(jù)時(shí),程序中要掛上數(shù)學(xué)庫的頭文件。

12、如下所示:逗號運(yùn)算符和逗號表達(dá)式 C語言提供一種特殊的運(yùn)算符。用它將兩個(gè)表達(dá)式連接起來。如:3+6,7+8。這種表達(dá)式叫作,其一般形式為: 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2 的求解過程是:先求解表達(dá)式表達(dá)式1 1,再求解表達(dá)式表達(dá)式2 2。例如:“5 56 6,7 79 9”的值為1616。 從附錄C中查出,而結(jié)合方向是“”(左結(jié)合)。那么如果有下面的表達(dá)式: a=5a=5* *6,a+8 6,a+8 應(yīng)理解為由 a=5a=5* *6 6和a+8a+8 兩個(gè)表達(dá)式構(gòu)成了一個(gè)逗號表達(dá)式。若a a的初值為4 4,上述逗號表達(dá)式的運(yùn)算過程是: 先求解a=5a=5* *6 6 得a a值為3030(表達(dá)式1的值)。 再求解a+8a+8 得30308 8為為3838

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論