版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第2章 運算符與表達式學習目標 學會使用基本運算符 理解運算符的優(yōu)先級和結(jié)合性規(guī)則 學會使用加一、減一運算符 學會使用賦值運算符 學會使用條件表達式 學會使用位運算符 理解類型轉(zhuǎn)換7/28/20221程序設(shè)計基礎(chǔ) 張杰敏2.1 程序設(shè)計的數(shù)據(jù) 迄今為止,所有馮諾依曼結(jié)構(gòu)的計算機都由以下5個部分組成: 輸入設(shè)備 負責把用戶的程序和數(shù)據(jù)輸入到計算機的存儲器中。 輸出設(shè)備 負責從計算機中取出程序執(zhí)行結(jié)果或其他信息,供用戶查看。 存儲器 是實現(xiàn)記憶功能的部件,負責存儲程序和數(shù)據(jù)。 運算器 負責數(shù)據(jù)的算術(shù)運算和邏輯運算,即數(shù)據(jù)的加工處理。 控制器 負責對程序規(guī)定的控制信息進行分析、控制并協(xié)調(diào)輸入、輸出操
2、作或內(nèi)存訪問。7/28/20222程序設(shè)計基礎(chǔ) 張杰敏2.1 程序設(shè)計的數(shù)據(jù)類型 數(shù)據(jù)特征的抽象地址、值 數(shù)據(jù)的存儲運算符、表達式、函數(shù) 數(shù)據(jù)的加工生存期、作用域 數(shù)據(jù)的存在賦值、輸入/輸出 數(shù)據(jù)的傳輸7/28/20223程序設(shè)計基礎(chǔ) 張杰敏2.2 基本運算符二元算術(shù)運算符包括加、減、乘、除、取模運算5種,分別用符號+、-、*、/、%表示由算術(shù)運算符連結(jié)的表達式稱為算術(shù)表達式 關(guān)系運算用來比較大小、確定運算分量的大小關(guān)系。C語言的關(guān)系運算符包括: = = = = !=關(guān)系運算符連結(jié)的表達式稱為關(guān)系表達式。關(guān)系表達式只有一個邏輯值,即“真” 或“假”。邏輯運算符包括邏輯與、邏輯或和邏輯非,分別用
3、符號&、| 和 !表示。 其中&和| 是二元的,!是一元的。邏輯運算符連結(jié)的表達式稱為邏輯表達式。邏輯表達式也只有一個邏輯值,即“真”或“假” C語言沒有邏輯型數(shù)據(jù),定義以int型值1代表“真”, int型值0代表“假” 7/28/20224程序設(shè)計基礎(chǔ) 張杰敏2.3 類型轉(zhuǎn)換當表達式中出現(xiàn)多種不同類型的數(shù)據(jù)時,C語言將依據(jù)一定規(guī)則把它們轉(zhuǎn)換成某個共同的類型,然后進行計算-隱式轉(zhuǎn)換 簡單的規(guī)則:在各類型間實行由低向高的轉(zhuǎn)換。下式箭頭方向表示數(shù)據(jù)類型間由低到高的排列順序: long double double float unsigned long long unsigned int int (
4、類型名)(表達式) 表達式被轉(zhuǎn)換成由類型名所指明的類型 -強制類型轉(zhuǎn)換 強制類型轉(zhuǎn)換還是自動轉(zhuǎn)換,需要轉(zhuǎn)換的變量事實上將產(chǎn)生一個符合轉(zhuǎn)換要求的中間變量參與計算,變量本身的類型和值不發(fā)生變化 7/28/20225程序設(shè)計基礎(chǔ) 張杰敏【例2-1】數(shù)值非0取邏輯值1,數(shù)值為0取邏輯值0。 #include void main() int i = 1; float f = 1.5f; if (f&i ) printf(f = %fti = %dt,f,i); printf(nBoth f and i are turen); i = 0; if(!i) printf(ni = %d,i); printf
5、(ni is falsen); 7/28/20226程序設(shè)計基礎(chǔ) 張杰敏運行結(jié)果:7/28/20227程序設(shè)計基礎(chǔ) 張杰敏【例2-2】計算圓周長和面積,運算結(jié)果為float型。 #include #define PI 3.1415 void main() float r,size,area; printf(r = ); scanf(%f,&r); size = 2*r*PI; area = r*r*PI; printf(size = %fn,size); printf(area = %fn,area); 7/28/20228程序設(shè)計基礎(chǔ) 張杰敏運行結(jié)果:7/28/20229程序設(shè)計基礎(chǔ) 張杰敏
6、【例2-3】計算圓周長和面積,運算結(jié)果為int型。 #include #define PI 3.1415 void main() double r; int size,area; printf(r = ); scanf(%lf,&r); size = 2*r*PI; area = r*r*PI; printf(size = %dn,size); printf(area = %dn,area); 7/28/202210程序設(shè)計基礎(chǔ) 張杰敏運行結(jié)果:7/28/202211程序設(shè)計基礎(chǔ) 張杰敏2.4 加1與減1運算符兩個特殊的運算符+和- ,+運算符使運算分量加 1,-運算符使運算分量減 +與-既可
7、以作前綴運算符,也可作后綴運算符,只用在變量前面或后面作前綴運算符與作后綴運算符,其結(jié)果其效果是不同的。+i在i的值被使用之前先使i加1;i+則是在i的值被使用之后再使 i加1 ,-i在i的值被使用之前先使i減1;i-則是在i的值被使用之后再使 i減1 7/28/202212程序設(shè)計基礎(chǔ) 張杰敏2.5 賦值運算符與賦值表達式使用賦值語句可以改變變量的值一般語法形式為:變量 = 表達式;賦值表達式結(jié)尾加“;”,使其成為賦值語句 “=”稱為賦值運算符,代表賦值操作,將賦值運算符右邊表達式的值賦給左邊的變量如果賦值運算符兩端的類型不一致,則會發(fā)生類型轉(zhuǎn)換 賦值運算符的結(jié)合規(guī)則為自右向左,其優(yōu)先級只高
8、于逗號運算符,而低于其它運算符 值運算符可與其它的運算符一起構(gòu)成復合賦值運算符,C語言的復合賦值運算符有以下10種,其中后5種有關(guān)位運算:+=、-=、*=、/=、%=、=、&=、=、|=將在2.7中介紹7/28/202213程序設(shè)計基礎(chǔ) 張杰敏2.4 賦值運算符與賦值表達式表2.2 賦值表達式的計算過程聲明和初始化int i=1, j=2, k=3, m=4表達式等價表達式等價表達式等價表達式值i+=j+ki+=(j+k)i=( i+( j+k)6 j*=k=m+5j*= k=(m+5)j*=( k=( m+5)j=(j* ( k=( m+5) )18i+=i-=i+2i+=i=(i-( i+
9、2)i+=(i=(i-( i+2)i=(i+(i=(i-( i+2)-4注意:在表達式i+=i-=i+2中,變量i被賦值過2次。7/28/202214程序設(shè)計基礎(chǔ) 張杰敏2.6 條件運算符和逗號運算符條件表達式的一般語法形式是: 表達式1?表達式2:表達式3首先計算表達式1 ,如果其值不等于0(即為真),則計算表達式2 的值,此時條件表達式的值等于表達式2的值;否則計算表達式3的值,并以該值作為條件表達式的值。在表達式2 與表達式 3中,只有一個會被計算到。條件運算符?:遵從自右向左的結(jié)合規(guī)則,其優(yōu)先級高于賦值運算符而低于關(guān)系運算符 如:條件表達式:y z ? y : z 的值 ,當yz時,為
10、y,否則為z。7/28/202215程序設(shè)計基礎(chǔ) 張杰敏【例2-5】求a,b,c中最大的數(shù)。#include void main()int a,b,c;int max;scanf(a=%d,b=%d,c=%d,&a,&b,&c);max = (ab?a:b);max = (maxc?max:c);printf(max=%dn,max); 7/28/202216程序設(shè)計基礎(chǔ) 張杰敏運行結(jié)果:7/28/202217程序設(shè)計基礎(chǔ) 張杰敏2.7 位運算符位運算是指對運算分量按二進制位進行的運算 C語言提供了六個用于位操作的運算符: & 按位與(AND) | 按位或(OR) 按位異或(XOR) 右移 求
11、反碼(一元運算符)這些運算符只能作用于整數(shù)型分量,包括unsigned或signed的char、short、int與long型,不能作用于浮點型分量 優(yōu)先級7/28/202218程序設(shè)計基礎(chǔ) 張杰敏2.7 位運算符-規(guī)則aba&ba|baba001101010001011110011100 (右移)的運算規(guī)則是:將運算分量的每個二進制位向右移動若干位,從右邊移出去的低位部分被丟棄 當右移無符號分量時,左邊空出的高位部分用 0填充;當右移有符號的分量時,填充位與具體的機器有關(guān) ,用符號位填充,稱為 “算術(shù)移位”或用 0填充,稱為 “邏輯移位” 7/28/202219程序設(shè)計基礎(chǔ) 張杰敏2.8 運
12、算符優(yōu)先級所有運算符的優(yōu)先級和結(jié)合性規(guī)則,包括尚未討論過的一些運算符及其規(guī)則 ,用圖表說明一元運算符較二元運算符有較高的優(yōu)先級別 ,特別是+和-,既能是一元運算符,也可以是二元運算符要注意它的用法7/28/202220程序設(shè)計基礎(chǔ) 張杰敏2.8 運算符優(yōu)先級運 算 符結(jié)合性() - .自左向右 ! + - +(一元) -(一元) * & (類型) sizeof自右向左 * / %自左向右+ - 自左向右自左向右 = 自左向右= != 自左向右&自左向右自左向右|自左向右&自左向右|自左向右?:自右向左= += -= *= /= &= = |= = 自右向左,自左向右7/28/202221程序設(shè)計基礎(chǔ) 張杰敏2.9 編程指導 在二元運算符的兩邊各放一個空格字符,可使運算組合更清楚,提高程序的可讀性 對于復雜的算術(shù)表達式使用括號,有時盡管不必要,但能夠使這個表達式更
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鄭州客運資格證應(yīng)用能力考試題目
- 2024年展會設(shè)計與布展合同
- 2024年延安駕??荚嚳瓦\從業(yè)資格證考試
- 2024年度養(yǎng)老保險合同
- 2024年呼和浩特客運技能鑒定題庫
- 2024年河源c1客運資格證考試項目
- 車展現(xiàn)場展位搭建與撤展服務(wù)協(xié)議
- 2024年江蘇客運從業(yè)資格證答題技巧與方法
- 2024年溫州客運資格證考試題
- 2024年度光纖采購合同模板
- 2024年采礦權(quán)轉(zhuǎn)讓合同范本
- 雙手向前投擲實心球 課件
- 第六章 回歸分析課件
- 期中階段性練習(一~四單元)(試題)-2024-2025學年五年級上冊數(shù)學蘇教版
- 醫(yī)療設(shè)備供貨安裝調(diào)試培訓、售后組織方案
- 朝鮮半島局勢演變
- 2024年云南德宏州州級事業(yè)單位選調(diào)工作人員歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 2024年秋新魯科版三年級上冊英語課件 Unit 6 lesson 1
- 英語國家概況-Chapter10-government解析
- 2024年浙江省中考英語試題卷(含答案)
- 2024-2030年中國AGV機器人行業(yè)發(fā)展分析及發(fā)展前景與趨勢預測研究報告
評論
0/150
提交評論