版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 簡單的算術(shù)運(yùn)算 和表達(dá)式,哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 蘇小紅,本章學(xué)習(xí)內(nèi)容, 算術(shù)運(yùn)算符 增1和減1運(yùn)算符 宏常量與 const常量 表達(dá)式與賦值中的自動(dòng)類型轉(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.1C運(yùn)算符和表達(dá)式(Operator and Expression),何謂運(yùn)算符和操作數(shù)?,3.1.1算術(shù)運(yùn)算符和表達(dá)式,Arithmetic Operators,除法(Division),Example:,整數(shù)除法(Integer D
2、ivision),11 / 5 = 2,Example:,實(shí)數(shù)除法(Floating Division),11.0 / 5 = 2.2,求余(Modulus),It returns the remainder that occurs after performing the division of 2 operands Rule: Operands must be integers,注意!,Example:,11 % 5 = 1,11,5,2,10,1,求余(Modulus),Example:,-11 % 5 = -1,-11,5,-2,-10,-1,求余(Modulus),Example:,
3、11 % -5 = 1,11,-5,-2,10,1,求余(Modulus),Example:,11.0 % 5 = ?,求余(Modulus),注意!,當(dāng)算術(shù)表達(dá)式包含兩個(gè)或兩個(gè)以上的算術(shù)運(yùn)算符時(shí) 首先要確定運(yùn)算順序 所有的運(yùn)算符都有一個(gè)優(yōu)先級( Order of Precedence ),算術(shù)表達(dá)式(Arithmetic Expression),優(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),Exam
4、ple:,?,4,8.5,2.5 + 6 , 4,4.5,2.5 + 6 2 * 2 =,算術(shù)表達(dá)式(Arithmetic Expression),4.5,巧妙使用圓括號(hào)改變運(yùn)算順序 從內(nèi)往外運(yùn)算,Example:,( 9 ( 3 + 2 ) ) * 3 = ?,算術(shù)表達(dá)式(Arithmetic Expression),Example: ( 9 ( 3 + 2 ) ) * 3 = ?, 5,4,12, ( 9 ( 3 + 2 ) ) * 3 = 12,算術(shù)表達(dá)式(Arithmetic Expression),賦值語句(Assignment Statement),三種賦值形式: Simple簡單
5、賦值 Multiple多重賦值 Shorthand簡寫的復(fù)合賦值,算術(shù)混合運(yùn)算,【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和,關(guān)鍵是如何分離個(gè)位、十位和百位數(shù)字?,153 % 10 = 3,153 / 100 = 1,153 1*100 = 53,53 / 10 = 5,【例3.1】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和,#include main() int x = 153, b0, b1, b2, sum; b2 = x / 100; b1 = (x - b2 * 100) / 10; b0 = x % 10; sum = b2 + b1 + b0; printf
6、(b2=%d, b1=%d, b0=%d, sum=%dn, b2, b1, b0, sum); ,變量的賦值,簡單賦值(Simple Assignment): 變量 = 表達(dá)式 ;,多重賦值(Multiple Assignment): 變量1 = 變量2 = 表達(dá)式 ;,Syntax: 變量x = 變量x 運(yùn)算符op 表達(dá)式 ; 變量x 運(yùn)算符op = 表達(dá)式;,3.1.2復(fù)合的賦值運(yùn)算符(Combined Assignment Operators),這種形式看起來更直觀,且執(zhí)行效率一般也更高一些,Example: num = num + 5;,15 + 5,20,20,Example: n
7、um += 5;,similar to num = 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,3,-6,-12,執(zhí)行 a += a -= a *= a 后,變量a的值? a += a -= a *= a a += a -= 9 a += 0 a = 0,3,9,0,0,簡寫的復(fù)合賦值(Shorthand Assignment),3.1.2復(fù)合的賦值運(yùn)算符(Com
8、bined Assignment Operators),3.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,3.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 - 2,similar to
9、 i = i + 1; j = i 2;,4,6,前綴( Prefix )增1和減1運(yùn)算符,Example: j = i+ - 2,similar to j = i 2; i = i + 1;,后綴(Postfix)增1和減1運(yùn)算符,3,6,int a=3; printf(%d, -a+);,similar to printf(%d, -a); a = a + 1;,后綴(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.
10、1.3增1和減1運(yùn)算符(Increment and Decrement),【例3.2】計(jì)算圓的周長和面積,circumference = 33.300854 area = 88.247263,#include main() double r = 5.3; printf(circumference = %fn, 2*3.14159*r); printf(area = %fn, 3.14159*r*r); ,#include main() double r; printf(Input r:); scanf(%lf, ,【例3.3】計(jì)算圓的周長和面積,Input r: 5.3 circumferen
11、ce = 33.300854 area = 88.247263,在程序中直接使用的常數(shù)稱為幻數(shù)(Magic Number),使用幻數(shù)存在的問題?,直接使用常數(shù)會(huì)有什么影響? 程序的可讀性變差 容易發(fā)生書寫錯(cuò)誤 當(dāng)常數(shù)需要改變時(shí),要修改所有引用它的代碼,工作量大,還可能有遺漏 解決方案: 避免使用幻數(shù) 把幻數(shù)定義為常量(宏常量、const常量),3.2宏常量與宏替換,#define 標(biāo)識(shí)符 字符串 宏常量(Macro Constant ) 也稱符號(hào)常量 一般采用全大寫字母表示 宏定義不是語句,而是一種編譯預(yù)處理命令,#include main() double r; printf(Input r
12、:); scanf(%lf, ,【例3.4】計(jì)算圓的周長和面積,宏替換,#include #define PI 3.14159; #define R 5.3; main() 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;); ,語法錯(cuò)誤,計(jì)算圓的周長和面積,#include main()
13、 const double PI = 3.14159; double r; printf(Input r:); scanf(%lf, ,const常量與宏常量相比的優(yōu)點(diǎn)是什么? const常量有數(shù)據(jù)類型 某些集成化調(diào)試工具可以對const常量進(jìn)行調(diào)試,3.3 const常量,【例3.5】,表達(dá)式與賦值中的自動(dòng)類型轉(zhuǎn)換,相同類型數(shù)據(jù)的運(yùn)算結(jié)果,還是該類型 不同類型數(shù)據(jù)的運(yùn)算結(jié)果,是兩種類型中取值范圍大的那種 long double double float long int short char,double,float,long,unsigned,int,char,short,表達(dá)式與賦值中的
14、自動(dòng)類型轉(zhuǎn)換,取值范圍小的類型賦值給取值范圍大的類型是安全的 反之是不安全的 若大類型的值在小類型能容納的范圍之內(nèi),則平安無事。但是浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會(huì)丟失小數(shù)部分,而非四舍五入 反之轉(zhuǎn)換后的結(jié)果必然是錯(cuò)誤的,具體結(jié)果與機(jī)器和實(shí)現(xiàn)方式有關(guān) 避免如此使用,好的編譯器會(huì)發(fā)出警告,注意!,表達(dá)式與賦值中的自動(dòng)類型轉(zhuǎn)換,【例 3.6】下面程序演示了賦值中的類型轉(zhuǎn)換,Example: int x = 10; float y; y = (float)x;,(float)10,10.000000,3.4自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,強(qiáng)轉(zhuǎn)(Casting)可以消除從大到小的警告 通過下面方式把表達(dá)式的值轉(zhuǎn)為
15、任意類型 (類型)表達(dá)式,不改變x,Example: int total, number; float average; average = total / number;,15 / 2,7,兩個(gè)整數(shù)運(yùn)算的結(jié)果 還是整數(shù),不是浮點(diǎn)數(shù),3.4自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,Example: int total, number; float average; average = (float)total / number;,15.000000 / 2,7.500000,3.4自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,【例3.7】演示強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的使用,m/2 = 2 (float)(m/2) = 2.000000 (float)m/2 = 2.500000 m = 5,3.5 常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù),【例3.8】計(jì)算三角形面積,area = sqrt(s * (s - a) * (s - b) * (s - c) area =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年蘭州成功學(xué)校高三年級輔導(dǎo)教師招聘筆試備考題庫及答案解析
- 2026年吉林省吉勤服務(wù)集團(tuán)有限責(zé)任公司社會(huì)化公開招聘(29人)考試備考題庫及答案解析
- 2026年河北承德市承德縣公開招聘消防設(shè)施操作員8名考試備考試題及答案解析
- 2026年蘭州新區(qū)石化產(chǎn)業(yè)投資集團(tuán)有限公司急需緊缺人員招聘112人筆試備考題庫及答案解析
- 2026銅川市新區(qū)文家中學(xué)教師招聘考試備考試題及答案解析
- 2026中國農(nóng)業(yè)科學(xué)院第一批招聘359人考試備考試題及答案解析
- 2026年昆明市五華區(qū)普吉街道社區(qū)衛(wèi)生服務(wù)中心招聘非事業(yè)編制工作人員(1人)考試備考題庫及答案解析
- 2026年國家海洋環(huán)境監(jiān)測中心面向社會(huì)公開招聘工作人員14人考試備考題庫及答案解析
- 2026重慶現(xiàn)代制造職業(yè)學(xué)院招聘考試參考試題及答案解析
- 2026年平安銀行西安分行實(shí)習(xí)生招募筆試模擬試題及答案解析
- 營養(yǎng)素失衡與環(huán)境污染的前沿探索-第1篇-洞察及研究
- 招標(biāo)投標(biāo)法實(shí)施條例解讀
- 現(xiàn)狀箱涵內(nèi)掛管施工方案
- 萬豪酒店前廳培訓(xùn)課件
- 車間員工自檢管理辦法
- 2022保得威爾JB-TG-PTW-6600E 火災(zāi)報(bào)警控制器(聯(lián)動(dòng)型)使用說明書
- 品質(zhì)檢查報(bào)告快速生成工具
- 鋰離子動(dòng)力蓄電池檢測報(bào)告
- 慢性病(高血壓、糖尿病)培訓(xùn)試題(附答案)
- 2025年中國兵器裝備集團(tuán)校園招聘面試預(yù)測題及答案
- 店面停氣處理方案(3篇)
評論
0/150
提交評論