




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第3 3章章 簡單的算術(shù)運(yùn)算和表達(dá)式簡單的算術(shù)運(yùn)算和表達(dá)式 王娜娜 wang_內(nèi)容提要C運(yùn)算符和表達(dá)式宏常量和宏替換const常量 自動類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換運(yùn)算符常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)運(yùn)算符( OPERATOR )詳見附錄C常見的運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符類型強(qiáng)轉(zhuǎn)關(guān)系運(yùn)算符邏輯運(yùn)算符增和減位運(yùn)算符3.1 C運(yùn)算符和表達(dá)式(OPERATOR AND EXPRESSION)運(yùn)算符( OPERATOR )詳見附錄C常見的運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符類型強(qiáng)轉(zhuǎn)關(guān)系運(yùn)算符邏輯運(yùn)算符增和減位運(yùn)算符3.1 C運(yùn)算符和表達(dá)式(OPERATOR AND EXPRESSION)當(dāng)表達(dá)式包含兩個(gè)或兩個(gè)以上的運(yùn)算符時(shí) ,
2、首先要確定運(yùn)算順序;所有的運(yùn)算符都有一個(gè)優(yōu)先級( Order of Precedence ) 1. 優(yōu)先級高的先運(yùn)算;2. 運(yùn)算按結(jié)合方向進(jìn)行;1. 識別優(yōu)先級:(), * /,+;2. (c+d);3. b * (c + d);4. b * (c + d) /d;5. a + b * (c + d) /d;a + b * (c + d) / d3.1 C運(yùn)算符和表達(dá)式(OPERATOR AND EXPRESSION)Example:何謂運(yùn)算符和操作數(shù)?算術(shù)運(yùn)算符除法(DIVISION)Example:浮點(diǎn)數(shù)除法(Floating Division) or or both are floats
3、整數(shù)除法(Integer Division) and are integersExample:整數(shù)除法(INTEGER DIVISION)Example:實(shí)數(shù)除法(FLOATING DIVISION)求余(MODULUS)It returns the remainder that occurs after performing the division of 2 operandsRule: 操作數(shù)必須是整數(shù)Operands must be integersExample:1152101remainder求余(MODULUS)Example:-115-2-10-1remainder求余(MODU
4、LUS)Example:11-5-210 1remainder求余(MODULUS)Example:求余(MODULUS) 優(yōu)先級(Order of Precedence) High:* / %Low: + -不同優(yōu)先級時(shí)的運(yùn)算順序:從高到低相同優(yōu)先級時(shí)的運(yùn)算順序:算術(shù)運(yùn)算符為左結(jié)合(從左到右)算術(shù)表達(dá)式(ARITHMETIC EXPRESSION)Example: 算術(shù)表達(dá)式(ARITHMETIC EXPRESSION)巧妙使用圓括號改變運(yùn)算順序從內(nèi)往外運(yùn)算Example:算術(shù)表達(dá)式(ARITHMETIC EXPRESSION)Example:算術(shù)表達(dá)式(ARITHMETIC EXPRESS
5、ION)算術(shù)混合運(yùn)算 【例3.1】計(jì)算并輸出一個(gè)兩位整數(shù)的個(gè)位、十位關(guān)鍵是如何分離個(gè)位、十位數(shù)字?【例3.1】計(jì)算并輸出一個(gè)兩位整數(shù)的個(gè)位、十位關(guān)鍵是如何分離個(gè)位、十位數(shù)字?【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和 關(guān)鍵是如何分離個(gè)位、十位、百位數(shù)字?【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和 關(guān)鍵是如何分離個(gè)位、十位、百位數(shù)字?【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和 關(guān)鍵是如何分離個(gè)位、十位、百位數(shù)字?【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和 賦值語句(ASSIGNMENT STATEMENT)三種賦值形式:Si
6、mple簡單賦值Multiple多重賦值Shorthand簡寫的復(fù)合賦值變量的賦值簡單賦值(Simple Assignment): 變量 = 表達(dá)式 ;Syntax: 變量x = 變量x 運(yùn)算符op 表達(dá)式 ; 變量x 運(yùn)算符op = 表達(dá)式;3.1.2復(fù)合的賦值運(yùn)算符(COMBINED ASSIGNMENT OPERATORS)OperationExamples of expressionDescription+=num += 5;num = num + 5;-=num -= 5;num = num 5;*=num *= 5;num = num * 5;/=num /= 5;num = nu
7、m / 5;%=num %= 5;num = num % 5;Example:num = num + 5;num1520Example:num += 5;3.1.2復(fù)合的賦值運(yùn)算符(COMBINED ASSIGNMENT OPERATORS)已知 int a = 3;執(zhí)行 a += a -= a * a 后,變量a的值? a += a -= a * a a += a -= 9 a += -6 a = -12執(zhí)行 a += a -= a *= a 后,變量a的值? a += a -= a *= a a += a -= 9 a += 0 a = 03.1.3增1和減1運(yùn)算符(INCREMENT A
8、ND DECREMENT)n+,n-,+n,-n+讓參與運(yùn)算的變量加1,-讓參與運(yùn)算的變量減1作為后綴(postfix)運(yùn)算符時(shí),先取n的值,然后加/減13.1.3增1和減1運(yùn)算符(INCREMENT AND DECREMENT)n+,n-,+n,-n+讓參與運(yùn)算的變量加1,-讓參與運(yùn)算的變量減1作為后綴(postfix)運(yùn)算符時(shí),先取n的值,然后加/減1作為前綴(prefix)運(yùn)算符時(shí),先加/減1,然后取n的值Example:j = +i - 2i5similar to j?46Example:j = i+ - 2i5similar to 后綴(POSTFIX)增1和減1運(yùn)算符j?36int
9、 a=3;printf(%d, -a+);a3similar to 后綴(POSTFIX)增1和減1運(yùn)算符4良好的程序設(shè)計(jì)風(fēng)格提倡:在一行語句中,一個(gè)變量只能出現(xiàn)一次增1或者減1運(yùn)算過多的增1和減1運(yùn)算混合,不僅可讀性差,而且因?yàn)榫幾g器實(shí)現(xiàn)的方法不同,導(dǎo)致不同編譯器產(chǎn)生不同的運(yùn)行結(jié)果3.1.3增1和減1運(yùn)算符(INCREMENT AND DECREMENT)【例3.2】計(jì)算圓的周長和面積 circumference = 33.300854area = 88.2472633.2宏常量與宏替換【例3.3】計(jì)算圓的周長和面積 Input r: 5.3circumference = 33.300854
10、 area = 88.247263在程序中直接使用的常數(shù)稱為幻數(shù)(Magic Number) 使用幻數(shù)存在的問題?假如直接使用常數(shù),會有什么影響?程序的可讀性變差容易發(fā)生書寫錯(cuò)誤當(dāng)常數(shù)需要改變時(shí),要修改所有引用它的代碼,工作量大,還可能有遺漏解決方案:避免使用幻數(shù)把幻數(shù)定義為常量(宏常量、const常量)3.2宏常量與宏替換 #define 標(biāo)識符 字符串宏常量(Macro constant )也稱符號常量一般采用全大寫字母表示 宏定義不是語句,而是一種編譯預(yù)處理命令【例3.4】計(jì)算圓的周長和面積 #include #define PI 3.14159;#define R 5.3;main()
11、printf(area = %fn, PI * R * R);printf(circumference = %fn, 2 * PI * R);相當(dāng)于執(zhí)行#include main()printf(area = %fn, 3.14159;*5.3;*5.3;);printf(circumference = %fn, 2*3.14159;*5.3;);計(jì)算圓的周長和面積 3.3 CONST常量表達(dá)式與賦值中的自動類型轉(zhuǎn)換相同類型數(shù)據(jù)的運(yùn)算結(jié)果,還是該類型不同類型數(shù)據(jù)的運(yùn)算結(jié)果,是兩種類型中取值范圍大的那種long double double float long int short chardou
12、blefloatlongunsignedintchar,short低高表達(dá)式與賦值中的自動類型轉(zhuǎn)換取值范圍小的類型賦給取值范圍大的類型是安全的反之是不安全的若大類型的值在小類型能容納的范圍之內(nèi),則平安無事 但是浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會丟失小數(shù)部分,而非四舍五入反之轉(zhuǎn)換后的結(jié)果必然是錯(cuò)誤的,具體結(jié)果與機(jī)器和實(shí)現(xiàn)方式有關(guān)避免如此使用,好的編譯器會發(fā)出警告表達(dá)式與賦值中的自動類型轉(zhuǎn)換【例 3.6】下面程序演示了賦值中的類型轉(zhuǎn)換Example: int x = 10;float y;y = (float)x;x10y?10.000000Example: int total, number;float ave
13、rage;average = total / number;total15number2average?7.000000兩個(gè)整數(shù)運(yùn)算的結(jié)果還是整數(shù),不是浮點(diǎn)數(shù)Example: int total, number;float average;average = (float)total / number;total15number2average?7.500000【例3.7】演示類型強(qiáng)轉(zhuǎn)運(yùn)算符m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù) 【例3.8】計(jì)算三角形面積 area = sqrt(s * (s - a) * (s - b) * (s - c)area = sqrt(s(s-a)(s-b)(s-c)s = 0.5 * (a + b + c)s = 1.0/2 * (a + b + c)s = (a + b + c) / 2.0s = (float)(a + b + c) / 2s = 1/2 * (a + b + c)s = (float)(a + b + c) / 2) 【例3.8】計(jì)算三角形面積 Input a,b,c:3,4,5area = 6.000000C運(yùn)算符和表達(dá)式(運(yùn)算規(guī)則、復(fù)合的賦值運(yùn)算、增1和減1運(yùn)算符)宏常量和宏替換(#defin
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年衡陽幼兒師范高等??茖W(xué)校單招職業(yè)技能測試題庫一套
- 2025四川省建筑安全員考試題庫
- 2025年湖南省株洲市單招職業(yè)適應(yīng)性測試題庫匯編
- 2025年廣東省廣州市單招職業(yè)傾向性測試題庫完美版
- 衛(wèi)浴工地采購合同范本
- 第一課時(shí)內(nèi)力與地表形態(tài)+復(fù)習(xí)學(xué)案 高中地理魯教版(2019)選擇性必修1
- 計(jì)量經(jīng)濟(jì)學(xué)(濟(jì)南大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋濟(jì)南大學(xué)
- 科技類產(chǎn)品在線銷售的市場趨勢與數(shù)據(jù)應(yīng)用
- 數(shù)據(jù)交易合同范本
- 版權(quán)教育與實(shí)踐啟蒙公眾知識財(cái)產(chǎn)觀念
- 中國歷史地理概況智慧樹知到期末考試答案章節(jié)答案2024年復(fù)旦大學(xué)
- 2024年山東信息職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 關(guān)于辦理物業(yè)管理交接事宜告知函
- 《電解富氫水機(jī)》課件
- 教學(xué)能力大賽-教學(xué)實(shí)施報(bào)告《大學(xué)英語2c》
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- 三年級上冊脫式計(jì)算100題及答案
- 2024年青海省旅游行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 金屬冶煉安全培訓(xùn)課件
- 高職應(yīng)用語文教程(第二版)教案 3管晏列傳
- 供應(yīng)鏈協(xié)作和合作方案
評論
0/150
提交評論