




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、運算與表達式 3.1 算術運算算術運算 n運算符(Operator):描述運算功能的符號n表達式(Expression):由運算符和操作對象構成的式子。n運算符分類: n根據(jù)操作數(shù)個數(shù)分類:單目運算符、雙目運算符 、三目運算符n根據(jù)運算功能分類:n算數(shù)運算符n關系運算符n邏輯運算符n位運算符n其它3.1 算術運算算術運算 n3.1.1 算術運算符 n單目基本算術運算符【例3.1】n+ 正n- 負n雙目基本算術運算符 【例3.2】n+ 加n- 減n* 乘n/ 除n% 求余數(shù)(要求兩個操作數(shù)必須是整數(shù))3.1 算術運算算術運算 n注意點1、若兩個操作數(shù)的類型不同不同,則先轉換為相同類型后再運算。2
2、、若兩個操作數(shù)的類型相同相同:n若均為short int 或 char 類型,則轉換為intn若均為float 類型,則轉換為double3、除法運算符/:若兩個操作數(shù)都是整型,則結果為整型(小數(shù)部分直接去掉)4、求余運算%:n兩個操作數(shù)必須是整型,否則編譯出錯。n結果的符號與第一個操作數(shù)符號相同。3.1 算術運算算術運算3.1.2 優(yōu)先級與結合性優(yōu)先級與結合性 n優(yōu)先級問題優(yōu)先級問題 當一個表達式中有多個運算符時,先計算哪個? 例如:10+20/10n結合性問題結合性問題當一個表達式中有多個相同優(yōu)先級的運算符時,是從左向右計算,還是從右向左計算?例如:10*2/5優(yōu)先級優(yōu)先級運算符運算符高高
3、& + - - & + - - (按位取反)(按位取反) ! !(邏輯非)(邏輯非) + +(正)(正) - -(負)(負) 右右左左* * / % / %左左右右+ +(加)(加) - -(減)(減)左左右右 (按位右移)(按位右移)左左右右 = =左左右右=(相等)(相等) != !=(不相等)(不相等)左左右右& &(按位與)(按位與)左左右右 (按位異或)(按位異或)左左右右| |(按位或)(按位或)左左右右&(邏輯與)(邏輯與)左左右右|(邏輯或)(邏輯或)左左右右?:?:(條件運算符)(條件運算符)右右左左= += -= = += -= *
4、*= /= %= = = /= %= = &= |= =&= |= =右右左左低低, ,(逗號)(逗號)左左右右請記錄請記錄3.1 算術運算算術運算3.1.3 數(shù)據(jù)類型轉換數(shù)據(jù)類型轉換 n數(shù)據(jù)類型轉換n隱式類型轉換n操作數(shù)為char或short int時,自動轉換為整型n操作數(shù)為float時,自動轉換為double型n當操作數(shù)類型不同時,將精度低的操作數(shù)的類型轉換為精度高的另一個操作數(shù)類型。n強制類型轉換n(類型名)(表達式) n(double)x signed charsigned short intsigned intsigned longunsigned charunsi
5、gned short intunsigned intunsigned longfloatdoublelong double請記錄請記錄3.1 算術運算算術運算 3.1.4自增、自減運算自增、自減運算 n自增運算符“+”n表達式形式:n運算符運算符 操作對象操作對象 如:如:+kn操作對象操作對象 運算符運算符 如:如:k+n自減運算符“-” n表達式形式:n運算符運算符 操作對象操作對象 如:如:-kn操作對象操作對象 運算符運算符 如:如:k-n注意注意n自增對象必須是整型變量整型變量 n盡量避免在一個表達式中出現(xiàn)對同一個變量的多次自增、自減運算 3.2關系運算關系運算 n關系運算符 n=
6、=雙目等于左結合n!=雙目不等于左結合n雙目大于左結合n=雙目大于等于左結合n雙目小于左結合n、=、=、y) & (-x0)后,求x的值2、執(zhí)行表達式(xy) | (-x0)后,求x的值3.4 位運算位運算 n3.4.1 按位邏輯運算 n&雙目 按位與左結合n|雙目 按位或左結合n 雙目 按位異或左結合n單目 按位取反(非) 右結合n3.4.2 移位運算移位運算n雙目 右移位左結合3.4 位運算位運算 n3.4.3 程序例子程序例子 n輸入一個整數(shù),把該數(shù)的二進制第5位清0 2個字節(jié):1111 1111 1110 1111 F F E Fn輸入一個整數(shù),判斷該數(shù)的二進制第5位是
7、否為1,若是則輸出1,否則輸出0 2個字節(jié):0000 0000 0001 0000 0 0 1 0例3.18例3.19參考參考【例例3.183.18】編程練習編程練習輸入一個無符號字符型整數(shù),把該數(shù)的二進輸入一個無符號字符型整數(shù),把該數(shù)的二進制第制第2 2位清為位清為0 0,第,第3 3位置為位置為1 1。103.5 指針運算指針運算 3.5.1 取地址運算 n通過求地址運算符(&)獲得地址值n表達式形式:& 操作對象n例如:int a=3,*p;p=a; n通過指針變量或地址常量獲得地址值nint a=3,*p=&a, *q=p;nchar *p=ABCDEFG; n
8、通過標準函數(shù)獲得地址值 n空指針:int *p=NULL; 或 int *p=0 或 int *p=0; 3.5 指針運算指針運算 3.5.2 操作指針變量 n存取單元的數(shù)據(jù)兩種方法n直接存取:通過變量名稱變量名稱存取變量值n間接存?。和ㄟ^變量地址變量地址存取變量值n指針變量的使用注意事項 n先賦值后使用 n“&”和“*”優(yōu)先級相同,結合性為右結合 q p a int a, *p=&a, *q=&p;3.5 指針運算指針運算 3.5.3 移動指針移動指針 n形式如下:n指針 + 整型表達式n指針 整型表達式 n【例3.22】指針變量使用舉例。#include void
9、main( )int a, *p=&a;char c, *pc=&c;printf(%d,%dn,p,p+1);printf(%d,%dn,p,p-2);printf(%d,%dn,pc,pc+1);printf(%d,%dn,pc,pc-2);app+1cpcpc+13.5 指針運算指針運算 3.5.3 比較指針比較指針 n形式如下:n類型相同的兩個指針變量之間可以進行、=、=、=、!= 的比較運算。此外,任何指針變量都可以和0或空指針進行“=”或“!=”的關系運算 。n兩個同類型指針之間也可以進行減法運算,減法運算的結果是兩個指針之間相差的內(nèi)存單元個數(shù),即兩者相差內(nèi)存地址值
10、除以指針指向數(shù)據(jù)類型所占內(nèi)存的大小。3.6 其它運算其它運算 3.6.1 sizeof運算 nsizeof是一個單目右結合運算符,運算結果是一個無符號的整型。格式:sizeof(操作對象操作對象)n操作對象可以是類型名、常量、變量或確定操作對象可以是類型名、常量、變量或確定類型的表達式類型的表達式n舉例舉例n操作對象為類型名,如:操作對象為類型名,如:sizeof(int)n操作對象為常量,如:操作對象為常量,如: sizeof(5) n操作對象為常量,如:操作對象為常量,如: sizeof(5.9) n操作對象為表達式,如:操作對象為表達式,如: sizeof(x+1)3.6 其它運算其它運
11、算 3.6.2 逗號運算逗號運算 n用逗號連接的表達式稱為逗號表達式。用逗號連接的表達式稱為逗號表達式。n逗號表達式的形式為:逗號表達式的形式為:表達式表達式1,表達式,表達式2,表達式,表達式3,表達式,表達式nn注意注意n逗號表達式的求解過程為:依次計算表達式逗號表達式的求解過程為:依次計算表達式1的值,表的值,表達式達式2的值,的值,表達式,表達式n的值。表達式的值。表達式n的值為逗號表的值為逗號表達式的值。達式的值。n逗號運算符的優(yōu)先級是所有運算符中最低的,其結合性逗號運算符的優(yōu)先級是所有運算符中最低的,其結合性是自左向右。是自左向右。n例如:例如:int x;x=3*5,12+15,
12、100/5; 3.6 其它運算其它運算 3.6.3 條件運算條件運算 n條件表達式的一般形式為:條件表達式的一般形式為:表達式表達式1 ? 表達式表達式2 : 表達式表達式3n先計算表達式先計算表達式1,如果表達式,如果表達式1的值非的值非0,則執(zhí)行表達式,則執(zhí)行表達式2,表達式,表達式2的值作為的值作為整個條件表達式的值;如果表達式整個條件表達式的值;如果表達式1為為0,則執(zhí)行表達式,則執(zhí)行表達式3,表達式,表達式3的值作為的值作為整個條件表達式的值。整個條件表達式的值。 n【例例3.26】輸入三個整數(shù),輸出其中最輸入三個整數(shù),輸出其中最大的一個大的一個#include void main(
13、 )int x,y,z,t;scanf(%d%d%d,&x,&y,&z);t = xy ? x : y;t = tz ? t : z;printf(%dn,t);3.7 賦值運算賦值運算 3.7.1 賦值運算符和賦值表達式賦值運算符和賦值表達式 n一般形式為:一般形式為:變量變量 = 表達式表達式 n說明n賦值運算符的優(yōu)先級僅高于僅高于逗號運算符,賦值表達式的求解過程為:先計算賦值運算符右邊的表達式的值,再將計算的值賦給運算符左邊的變量。n賦值運算符具有計算和賦值計算和賦值的雙重功能。3.7 賦值運算賦值運算 3.7.2 復合賦值運算復合賦值運算 n在賦值運算符之前加上
14、其它運算符可以構成復合在賦值運算符之前加上其它運算符可以構成復合賦值運算符賦值運算符 n一般形式如下:+=a+ =b等價于a=a+b-=a-=b等價于a=a-b*= a*=b等價于a=a*b/=a/=b等價于a=a/b%=a%=b 等價于a=a%b=a=b等價于a=a=a=b等價于a=ab&=a&=b等價于a=a&b=a=b等價于a=ab|=a|=b等價于a=a|b本章習題:1. 已知有定義:char ch;則下面賦值正確的有哪些:ch=X 對ch=55錯ch=M 錯ch=55 錯ch=55對本章習題:1. 已知有定義:char ch;則下面賦值正確的有哪些:ch=X 對ch=55錯ch=M 錯ch=55 錯ch=55對8. 給出下面程序的運行結果給出下面程序的運行結果(1)int x=0 x100100;char *p=(char *)&x;*p=A;等價于等價于*p=0 x41p=p+2;*p=50;等價于等價于*p=0 x32printf(%xn,x);00410110 3200低字節(jié)低字節(jié)高字節(jié)高字節(jié)pa 即61pb 即62c 即63d 即64低字節(jié)低字節(jié)高字節(jié)高字節(jié)e 即65f 即6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 22460-1:2025 EN Cards and security devices for personal identification - ISO UAS licence and drone or UAS security module - Part 1: Physical characteristics and basi
- 2025年消費者行為與市場趨勢相關試卷及答案
- 2025年道路交通運輸管理職業(yè)考試試卷及答案
- 2025年公共衛(wèi)生與預防醫(yī)學考試試卷及答案
- 數(shù)字化教與學平臺的建設與應用 黃海 中山大學
- 2025年金屬基復合材料項目發(fā)展計劃
- 2025年氟碳涂料項目發(fā)展計劃
- 腫瘤的淋巴轉移
- 蛋白過敏寶寶護理指南
- 中藥飲片工業(yè)管理體系研究
- 主題班會《中國夢我的夢》課件
- 古詩詞誦讀《客至》-統(tǒng)編版高中語文選擇性必修下冊
- 西南交11春學期《模擬電子技術A》離線作業(yè)
- 施工單位平安工地考核評價表(標準)
- 建筑材料分類整理
- 人民幣發(fā)展史-課件(PPT演示)
- 經(jīng)歷是流經(jīng)裙邊的水
- 骨科疾病的康復課件
- 三氯乙醛 氯醛MSDS危險化學品安全技術說明書
- 合作社貸款申請書范文(優(yōu)選十三篇)
- 產(chǎn)品平臺與CBB技術管理課件
評論
0/150
提交評論