版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、鄭州大學(xué)軟件學(xué)院c語言程序設(shè)計系學(xué)生: 2011年春季學(xué)期3360講師:宋偉辦公室:18號樓315室第4章算術(shù)運算符和算術(shù)表達式第3章主要內(nèi)容算術(shù)運算符的概念、分類和優(yōu)先級與方向表達式的概念相結(jié)合給算術(shù)表達式賦值第4章學(xué)習(xí)內(nèi)容運算符是一個符號告訴編譯器執(zhí)行相應(yīng)的算術(shù)或邏輯運算等。c語言中有豐富的運算符,例如,運算符、常量和變量,如算術(shù)運算符、邏輯運算符和關(guān)系運算符,都是表達式的元素,而表達式是這些元素的有效組合。大多數(shù)表達式的書寫遵循數(shù)學(xué)習(xí)慣,并且很容易理解表達式的值可以通過運算獲得。當(dāng)一個表達式是一個復(fù)雜的表達式時,它的子表達式的值應(yīng)該作為以下操作的對象:算術(shù)運算符和算術(shù)表達式。運算符和表達
2、式,表達式是數(shù)據(jù)之間運算關(guān)系的表達式,由操作數(shù)和運算符按照一定的規(guī)則組成。操作數(shù):常量、變量和函數(shù)操作符:算術(shù)、關(guān)系、邏輯、位和賦值。單個常量、變量和函數(shù)也是表達式。6,C的運算符是符號,它們的功能是通知編譯器將執(zhí)行相應(yīng)的操作。c語言有豐富的運算符,包括算術(shù)運算符、邏輯運算符和關(guān)系運算符等34種運算符。運算符、常量和變量是表達式的基本元素。大多數(shù)表達式是根據(jù)數(shù)學(xué)習(xí)慣寫的。表達式的值可以通過運算得到。當(dāng)表達式是復(fù)雜表達式時,其子表達式的值應(yīng)該用作余數(shù)運算的參數(shù)。7,語言運算符,8,運算符函數(shù)和操作數(shù)之間的關(guān)系需要操作數(shù)編號、操作數(shù)類型、運算符優(yōu)先級和方向結(jié)果類型。學(xué)習(xí)運算符應(yīng)注意9、3.1算術(shù)運
3、算符。C語言中有五種算術(shù)運算符,總共代表六種運算。(加法運算符,或正運算符)-(減法運算符,或負運算符)*(乘法運算符)/(除法運算符)%(模運算符)負運算符只需要一個數(shù)據(jù)對象參與運算,稱為一元運算符。加法、減法、乘法、除法和模運算需要兩個數(shù)據(jù)對象參與運算,稱為二進制運算。注:算術(shù)運算符的用法與數(shù)學(xué)中運算符的用法基本相同,但有些用法與數(shù)學(xué)習(xí)慣不同。(1)數(shù)學(xué)中的符號“”不能用C語言來表示乘法。另外,當(dāng)兩個數(shù)據(jù)在C語言中相乘時,“*”不能省略。8 * m不能寫成8m、8m或8m。(2)除法不能用符號 或分隔線(不在鍵盤上)來表示,11。注:(3)當(dāng)除數(shù)和被除數(shù)都是整數(shù)時,它們的商也是整數(shù)(四舍五
4、入而不是四舍五入)。5/3的結(jié)果是1。例如,5.4/2的結(jié)果是2.7,6/3.0的結(jié)果是2.0,2.0/3.0的結(jié)果是0.66667。(5)符號“%”表示模運算,即兩個整數(shù)除的余數(shù)。模運算只能在兩個整數(shù)之間使用。5% 3結(jié)果22% 3結(jié)果25.3% 4,12%3.4和15.6%2.3都是錯的,2/3=?算術(shù)運算符的優(yōu)先級,不同的算術(shù)運算符有不同的求解順序,即優(yōu)先級,加號和減號運算優(yōu)先級最高,然后是乘法、除法和模運算,最后是加法和減法運算。括號可以用來提高運算符的優(yōu)先級。圓括號“”和大括號“”不用于更改操作符號的優(yōu)先級。否則,如果表達式包含兩個具有相同優(yōu)先級的運算符,則運算符的求解順序取決于它們
5、的組合方向。算術(shù)運算符的組合方向是從左到右。,13,C語言中算術(shù)運算符的優(yōu)先級和組合方向,14,3.2算術(shù)表達式,根據(jù)C語言的規(guī)則,連接算術(shù)運算符、括號和操作數(shù)(常量、變量、函數(shù)等)的公式。)被稱為算術(shù)表達式。數(shù)學(xué)問題的表達式描述了標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)的使用。15,1。算術(shù)表達式的組成,C語言的算術(shù)表達式由操作數(shù)(常量、變量、函數(shù)等)組成。)組成C語言的表達式是遞歸定義的。單個常量或變量是一個表達式,稱為原子表達式。例如,“3”和“x”都是原子表達式。用運算符連接表達式的有效公式是表達式。例如,“3 4”、“x=5”和“x=5 7”都是表達式。括號中的表達式也是表達式。例如,“(x 4)”和“(x=6
6、)”都是表達式。所有表達式都是通過有限次數(shù)地使用規(guī)則(1)、(2)和(3)獲得的。16,12(1 * 2)/x sin(a)cos(b)(-b sqrt(b * b-4 * a * c)/(2 * a),17,(1 * 2)/x,通過常數(shù)1,2;變量x。運算符*,/;和一對圓括號,其中單個常量或變量1,2,x也可以看作基本表達式組合1*2,(1*2)也是表達式,18,表達式的分類,如果一個表達式不是原子表達式,它就叫做復(fù)合表達式。根據(jù)上一次運算的不同,表達式也可以分為不同的表達式。最后一個操作是賦值操作的表達式,稱為賦值表達式。最后一個運算是算術(shù)運算的表達式,稱為算術(shù)表達式。例如,x=3 5
7、y=(3 5)都是賦值表達式。3 4 5 * 7 43/4 65 * 65 (x=3)都是算術(shù)表達式。19,子表達式,如果表達式A是表達式B的一個組成部分,那么表達式A稱為表達式B的子表達式。一般來說,一個表達式可以由幾個基本的子表達式組成,20,注意,C語言表達式中的所有字符都寫在一行上,沒有分數(shù)和下標(biāo)。圓括號只是圓括號(方括號和花括號用于其他目的)。任何正確的表達式都應(yīng)該表示(或能夠計算)一個值。表達式的類型和值與所采用的運算、操作數(shù)的數(shù)據(jù)類型和操作數(shù)的值有關(guān)。表達式“3/2”的類型為整數(shù),其值為1;表達式“3.0/2”的類型是實數(shù),其值是1.5。單個常量或變量也可以看作是一個基本表達式:
8、1 x是一個表達式,例如,表達式 1 2 的值是一個整數(shù)3;表達式“1.0 2”的值是實類型3.0。如果變量m的值為1,則在執(zhí)行“m 10”之后,m的值不會變成11,這意味著“將m的值加到10的結(jié)果”,即表達式的結(jié)果是11,21。基本算術(shù)運算符:-*/%組合方向:從左到右優(yōu)先級:-*/%-說明:當(dāng)“-”可以是單目運算符時,右邊的組合除以兩個整數(shù),結(jié)果為整數(shù)%。兩邊都要求是整數(shù)數(shù)據(jù),例如5/2=-5/2.0=,例如5%。算術(shù)運算符和表達式,2,-2.5,1,-1,1,0,(),注:兩個整數(shù)的除法,如:7/4=1 7/8=0;如果其中一個整數(shù)是負的,例如:-7/4,這取決于系統(tǒng)的處理。大多數(shù)系統(tǒng)-
9、7/4=-1;但是,有些系統(tǒng)7/4=-2,22,2。數(shù)學(xué)問題的表達式描述,在編程時,有必要用C語言表達式的形式來描述數(shù)學(xué)問題,變量描述為m,n,x,y;(1)求m和n的和可以被描述為m n(2)求整數(shù)m的單個數(shù)字,以及m% 10(3)通過輸入具有數(shù)學(xué)公式y(tǒng)=x2-11x 2的x的值來求y的值,其可以被描述為y=x * x-11 * x-2,23,示例4 printf(%d,%d,%d,x % 10,(x/10) % 10,(x/100)% 10);/* (x/10)% 10,查找十位數(shù)*/返回0;24,3。標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)的使用C語言提供了一個標(biāo)準(zhǔn)函數(shù)庫,其中包含了許多常用的數(shù)學(xué)函數(shù)。當(dāng)使用C語言
10、表達式來描述復(fù)雜的數(shù)學(xué)表達式時,經(jīng)常會用到一些標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)。數(shù)學(xué)計算的標(biāo)準(zhǔn)庫函數(shù)見附錄B。int ABS(int x);雙cos(雙x);雙exp(雙x);25,示例4.2讓y=|x|1/2。當(dāng)x的值為5.678時,計算y的值。# include # include /*要使用標(biāo)準(zhǔn)數(shù)學(xué)庫函數(shù),您需要包含math.h頭文件*/int main()雙x,y;x=5.678y=sqrt(fabs(x);printf (y=%lfn,y);返回0;程序的運行結(jié)果是:26,示例讓y=(lg|x|-ln(x1/2)/4。當(dāng)x的值為3.12時,輸出y的值,并返回#include #include /*要使
11、用標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù),需要包含相應(yīng)的數(shù)學(xué)頭文件*/int main()雙x,y;x=3.12y=1.0/4 *(log 10(fabs(x)-log(sqrt(x);printf(ny=%f,y);返回0;27,4.3類型轉(zhuǎn)換,C語言允許不同類型值的混合運算,例如,整數(shù)數(shù)據(jù)(包括整型、長整型和字符型數(shù)據(jù)等)。)和真實數(shù)據(jù)(包括浮點、雙精度)可以混合運算,但是當(dāng)混合運算不同類型的數(shù)據(jù)時,需要進行類型轉(zhuǎn)換。有兩種轉(zhuǎn)換方式:自動轉(zhuǎn)換(也稱為隱式轉(zhuǎn)換)強制類型轉(zhuǎn)換(也稱為顯式轉(zhuǎn)換),隱式轉(zhuǎn)換(自動轉(zhuǎn)換)在什么情況下會發(fā)生賦值轉(zhuǎn)換?賦值運算符右側(cè)的表達式類型轉(zhuǎn)換為賦值運算符左側(cè)的變量類型,然后進行賦值。賦值
12、轉(zhuǎn)換規(guī)則:當(dāng)一個實值賦給一個整數(shù)變量時,小數(shù)部分被丟棄;當(dāng)整數(shù)值被賦給實變量時,小數(shù)部分被加上(小數(shù)點后的所有部分都是0);當(dāng)字符被分配給整數(shù)變量時,字符的ASCII碼值被分配給整數(shù)變量。賦值有更多的轉(zhuǎn)換規(guī)則,詳見第13章。30,(2)運算轉(zhuǎn)換,當(dāng)不同類型的值混合在同一個表達式中時,它們將自動轉(zhuǎn)換為同一類型然后進行運算。轉(zhuǎn)換由編譯系統(tǒng)自動完成。自動轉(zhuǎn)換遵循一些規(guī)則,如圖所示。圖中水平箭頭的意思是實數(shù)的計算精度是兩倍。也就是說,即使當(dāng)兩個浮點型變量被操作時,它們首先被轉(zhuǎn)換成雙精度型,然后被操作。31,混合操作類型轉(zhuǎn)換規(guī)則。如果運算符兩邊的操作數(shù)類型不同,首先將操作數(shù)轉(zhuǎn)換為相同類型,然后參與運算規(guī)
13、則:較低類型轉(zhuǎn)換為較高類型的加法公式“1 2.2”。當(dāng)根據(jù)數(shù)學(xué)規(guī)則操作時,加法運算符左側(cè)的整數(shù)1需要轉(zhuǎn)換為小數(shù)1.0,然后與加法運算符右側(cè)的小數(shù)2.2相加。十進制3.2 C語言中混合運算的規(guī)則和數(shù)學(xué)習(xí)慣是相似的,但由于數(shù)據(jù)類型的定義更加具體,其轉(zhuǎn)換規(guī)則也更加復(fù)雜。32.混合操作類型轉(zhuǎn)換規(guī)則,水平箭頭表示必要的轉(zhuǎn)換;垂直箭頭表示運算符兩側(cè)的操作數(shù)屬于不同類型時的轉(zhuǎn)換。33.示例4.3類型轉(zhuǎn)換。# include int main()int num 1=3;long num 2=4;printf(結(jié)果=%ldn,num 1 num 2);返回0;程序的運行結(jié)果是:34,轉(zhuǎn)換描述,不同數(shù)據(jù)類型的表達
14、式被操作,并且轉(zhuǎn)換在增加數(shù)據(jù)長度(存儲單元中這種類型的數(shù)據(jù)所占用的字節(jié)數(shù))的方向上執(zhí)行。也就是說,根據(jù)“與高對齊”的原則,提升“低”的類型,以確保精度不降低。轉(zhuǎn)變是一步到位的轉(zhuǎn)變。在示例4.3中,當(dāng)混合int類型和long類型的數(shù)據(jù)時,首先不將int類型轉(zhuǎn)換為無符號類型,然后將無符號類型轉(zhuǎn)換為長類型,但將int類型直接轉(zhuǎn)換為長類型。類型轉(zhuǎn)換:數(shù)據(jù)根據(jù)轉(zhuǎn)換后的類型參與操作,但操作過程不改變數(shù)據(jù)本身的類型。在示例4.3中,計算表達式“num1 num”不會改變num1的類型。也就是說,求和之后,num1的類型仍然是int。35,實例4.4是已知的:char ch=A;int m=5;浮動f=2.0
15、雙倍d=2.5長L=10運算過程的表達式ch m-f * d/L,如圖所示。36,2。強制類型轉(zhuǎn)換,C語言還提供了一種顯式的強制類型轉(zhuǎn)換機制,程序員通過對類型描述符的描述,根據(jù)指定的類型,強制某些數(shù)據(jù)參與操作。它的一般形式是(類型描述符)表達式,其效果是將表達式的類型強制轉(zhuǎn)換為所需的類型。當(dāng)您強制類型轉(zhuǎn)換時,您必須使用一組括號來括住您要轉(zhuǎn)向的類型描述符。要轉(zhuǎn)換類型的表達式通常用括號括起來。但是,如果要轉(zhuǎn)換的類型的表達式是原子表達式,則不能添加括號。例如:(double) a /*將A轉(zhuǎn)換為double類型*/(int) (x y) /*將“x y”的計算結(jié)果轉(zhuǎn)換為int類型*/(int) x y /*僅將X轉(zhuǎn)換為int類型,然后添加Y */與強制類型轉(zhuǎn)換和自動轉(zhuǎn)換一樣,它不更改原始表達式本身的值和類型,而是僅更改原始表達式37,一般形式:(類型名稱) (表達式)示例:(int)(X Y)(int)X Y(double)(3/2)(int)3.6int I;x=3
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)法規(guī)培訓(xùn)課件模板
- 2026年劇本殺運營公司異業(yè)合作洽談管理制度
- 互聯(lián)網(wǎng)會計面試自我介紹
- 人工智能推進基礎(chǔ)教育公平的現(xiàn)實隱憂與優(yōu)化路徑
- 2025年智能機器人行業(yè)創(chuàng)新與全球市場趨勢報告
- 2025年人工智能智能客服機器人技術(shù)創(chuàng)新在教育行業(yè)的應(yīng)用可行性報告
- 邊防輔警面試題目及答案
- 保險公司紀檢巡查制度
- 分級護理制度的護理團隊建設(shè)
- 企業(yè)案經(jīng)日制度
- DL-T976-2017帶電作業(yè)工具、裝置和設(shè)備預(yù)防性試驗規(guī)程
- 新能源并網(wǎng)系統(tǒng)短路比指標(biāo)分析及臨界短路比計算方法
- DB32T3916-2020建筑地基基礎(chǔ)檢測規(guī)程
- 換電柜維護培訓(xùn)課件
- GB/T 15153.1-2024遠動設(shè)備及系統(tǒng)第2部分:工作條件第1篇:電源和電磁兼容性
- 初中語文 送別詩練習(xí)題(含答案)
- 企業(yè)標(biāo)準(zhǔn)-格式模板
- 五年級上冊道德與法治期末測試卷新版
- 2022年醫(yī)學(xué)專題-石家莊中國鮑曼不動桿菌感染診治與防控專家共識
- YS/T 903.1-2013銦廢料化學(xué)分析方法第1部分:銦量的測定EDTA滴定法
- FZ/T 70010-2006針織物平方米干燥重量的測定
評論
0/150
提交評論