C語言程序設(shè)計3-運算與表達式_第1頁
C語言程序設(shè)計3-運算與表達式_第2頁
C語言程序設(shè)計3-運算與表達式_第3頁
C語言程序設(shè)計3-運算與表達式_第4頁
C語言程序設(shè)計3-運算與表達式_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、運算與表達式 3.1 算術(shù)運算算術(shù)運算 n運算符(Operator):描述運算功能的符號n表達式(Expression):由運算符和操作對象構(gòu)成的式子。n運算符分類: n根據(jù)操作數(shù)個數(shù)分類:單目運算符、雙目運算符 、三目運算符n根據(jù)運算功能分類:n算數(shù)運算符n關(guān)系運算符n邏輯運算符n位運算符n其它3.1 算術(shù)運算算術(shù)運算 n3.1.1 算術(shù)運算符 n單目基本算術(shù)運算符【例3.1】n+ 正n- 負n雙目基本算術(shù)運算符 【例3.2】n+ 加n- 減n* 乘n/ 除n% 求余數(shù)(要求兩個操作數(shù)必須是整數(shù))3.1 算術(shù)運算算術(shù)運算 n注意點1、若兩個操作數(shù)的類型不同不同,則先轉(zhuǎn)換為相同類型后再運算。2

2、、若兩個操作數(shù)的類型相同相同:n若均為short int 或 char 類型,則轉(zhuǎn)換為intn若均為float 類型,則轉(zhuǎn)換為double3、除法運算符/:若兩個操作數(shù)都是整型,則結(jié)果為整型(小數(shù)部分直接去掉)4、求余運算%:n兩個操作數(shù)必須是整型,否則編譯出錯。n結(jié)果的符號與第一個操作數(shù)符號相同。3.1 算術(shù)運算算術(shù)運算3.1.2 優(yōu)先級與結(jié)合性優(yōu)先級與結(jié)合性 n優(yōu)先級問題優(yōu)先級問題 當一個表達式中有多個運算符時,先計算哪個? 例如:10+20/10n結(jié)合性問題結(jié)合性問題當一個表達式中有多個相同優(yōu)先級的運算符時,是從左向右計算,還是從右向左計算?例如:10*2/5優(yōu)先級優(yōu)先級運算符運算符高高

3、& + - - & + - - (按位取反)(按位取反) ! !(邏輯非)(邏輯非) + +(正)(正) - -(負)(負) 右右左左* * / % / %左左右右+ +(加)(加) - -(減)(減)左左右右 (按位右移)(按位右移)左左右右 = =左左右右=(相等)(相等) != !=(不相等)(不相等)左左右右& &(按位與)(按位與)左左右右 (按位異或)(按位異或)左左右右| |(按位或)(按位或)左左右右&(邏輯與)(邏輯與)左左右右|(邏輯或)(邏輯或)左左右右?:?:(條件運算符)(條件運算符)右右左左= += -= = += -= *

4、*= /= %= = = /= %= = &= |= =&= |= =右右左左低低, ,(逗號)(逗號)左左右右請記錄請記錄3.1 算術(shù)運算算術(shù)運算3.1.3 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換 n數(shù)據(jù)類型轉(zhuǎn)換n隱式類型轉(zhuǎn)換n操作數(shù)為char或short int時,自動轉(zhuǎn)換為整型n操作數(shù)為float時,自動轉(zhuǎn)換為double型n當操作數(shù)類型不同時,將精度低的操作數(shù)的類型轉(zhuǎn)換為精度高的另一個操作數(shù)類型。n強制類型轉(zhuǎn)換n(類型名)(表達式) n(double)x signed charsigned short intsigned intsigned longunsigned charunsi

5、gned short intunsigned intunsigned longfloatdoublelong double請記錄請記錄3.1 算術(shù)運算算術(shù)運算 3.1.4自增、自減運算自增、自減運算 n自增運算符“+”n表達式形式:n運算符運算符 操作對象操作對象 如:如:+kn操作對象操作對象 運算符運算符 如:如:k+n自減運算符“-” n表達式形式:n運算符運算符 操作對象操作對象 如:如:-kn操作對象操作對象 運算符運算符 如:如:k-n注意注意n自增對象必須是整型變量整型變量 n盡量避免在一個表達式中出現(xiàn)對同一個變量的多次自增、自減運算 3.2關(guān)系運算關(guān)系運算 n關(guān)系運算符 n=

6、=雙目等于左結(jié)合n!=雙目不等于左結(jié)合n雙目大于左結(jié)合n=雙目大于等于左結(jié)合n雙目小于左結(jié)合n、=、=、y) & (-x0)后,求x的值2、執(zhí)行表達式(xy) | (-x0)后,求x的值3.4 位運算位運算 n3.4.1 按位邏輯運算 n&雙目 按位與左結(jié)合n|雙目 按位或左結(jié)合n 雙目 按位異或左結(jié)合n單目 按位取反(非) 右結(jié)合n3.4.2 移位運算移位運算n雙目 右移位左結(jié)合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)先級相同,結(jié)合性為右結(jié)合 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或空指針進行“=”或“!=”的關(guān)系運算 。n兩個同類型指針之間也可以進行減法運算,減法運算的結(jié)果是兩個指針之間相差的內(nèi)存單元個數(shù),即兩者相差內(nèi)存地址值

10、除以指針指向數(shù)據(jù)類型所占內(nèi)存的大小。3.6 其它運算其它運算 3.6.1 sizeof運算 nsizeof是一個單目右結(jié)合運算符,運算結(jié)果是一個無符號的整型。格式: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)先級是所有運算符中最低的,其結(jié)合性逗號運算符的優(yōu)先級是所有運算符中最低的,其結(jié)合性是自左向右。是自左向右。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、其它運算符可以構(gòu)成復合在賦值運算符之前加上其它運算符可以構(gòu)成復合賦值運算符賦值運算符 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. 給出下面程序的運行結(jié)果給出下面程序的運行結(jié)果(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)系上傳者。文件的所有權(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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論