C語(yǔ)言的數(shù)據(jù)類型與基本操作.ppt_第1頁(yè)
C語(yǔ)言的數(shù)據(jù)類型與基本操作.ppt_第2頁(yè)
C語(yǔ)言的數(shù)據(jù)類型與基本操作.ppt_第3頁(yè)
C語(yǔ)言的數(shù)據(jù)類型與基本操作.ppt_第4頁(yè)
C語(yǔ)言的數(shù)據(jù)類型與基本操作.ppt_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余53頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、第二章,C語(yǔ)言數(shù)據(jù)類型與基本操作,2,本章主要內(nèi)容,1、常量和變量 2、標(biāo)識(shí)符與關(guān)鍵字 3、整型數(shù)在計(jì)算機(jī)中的存儲(chǔ)方式 4、有符號(hào)的數(shù)據(jù)類型和無(wú)符號(hào)的數(shù)據(jù)類型 5、運(yùn)算符及表達(dá)式 6、不同類型數(shù)據(jù)間的轉(zhuǎn)換,數(shù)據(jù) 類型,構(gòu)造類型,指針類型,空類型,char (字符類型),enum(枚舉類型),整型,實(shí)型,float (單精度),double (雙精度),short int (短整型),long int (長(zhǎng)整型),int (整型),數(shù)組類型,結(jié)構(gòu)類型,共同類型,基本類型,數(shù)值類型,文件類型,C語(yǔ)言的數(shù)據(jù)類型,數(shù)據(jù)類型決定:,1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù),2.數(shù)據(jù)取值范圍,3. 其上可進(jìn)行的操作,4,2.

2、1.1 常量,2.1 常量與變量,在程序運(yùn)行過(guò)程中,其值不改變的量稱為常量。,在C語(yǔ)言中,常量有不同的類型:,整型常量(int) 短整型(short int) 長(zhǎng)整型(long int) 無(wú)符號(hào)型(unsigned int) 實(shí)型常量(float和double) 字符常量(char) 字符串常量,5,1整型常量,十進(jìn)制常量 如15,19,123,-345等 。 八進(jìn)制常量 以數(shù)字0開頭 如:05,012,0123 十六進(jìn)制常量 以數(shù)字0和字母x(或大寫字母X)開頭 如:0 x10,0Xff,0X8,十進(jìn)制5,10,83,十進(jìn)制數(shù)16,255,8,6,2實(shí)型常量,用小數(shù)形式表示 如:345,.3

3、45, 345.0,3.14159 指數(shù)形式表示 1.5e5,2.9e-7,1.5105,2.910-7。,注意: 指數(shù)形式的浮點(diǎn)常量E或e前面必須有數(shù)字,E或e 后面必須為整數(shù)。,7,3字符常量,用一對(duì)單撇號(hào)括起來(lái)的一個(gè)字符 如a,A,?, # 單撇號(hào)只是字符與其他部分的分隔符/定界符,不是字符常量的一部分。 不能用雙引號(hào)代替撇號(hào),如a不是字符常量。,字符型常量:,它是用一對(duì)單撇號(hào)括起來(lái)的一個(gè)字符 如a,A,?, # 等,轉(zhuǎn)義字符,有些字符和命令無(wú)法通過(guò)鍵盤直接輸入,因而借用一個(gè)符號(hào)或者數(shù)字來(lái)表示,C語(yǔ)言用反斜杠“”來(lái)表示轉(zhuǎn)義字符的起始符,轉(zhuǎn)義字符的表示有三個(gè)方面:,用反斜杠開頭后面跟一個(gè)字

4、母代表一個(gè)控制字符;,n,t,r,b,回車換行,回車不換行,退格,水平跳格,代表字符,用代表字符。, 用“”后跟1到3個(gè)八進(jìn)制數(shù)代表ASCII碼為該八進(jìn)制數(shù)的字符;用“x”后跟12個(gè)十六進(jìn)制數(shù)代表ASCII碼為該十六進(jìn)制數(shù)的字符。,101或 x41 表示A 363或 xf3 表示 012或 x1A 表示 100或 x40 表示 ,【例1】打印人民幣符號(hào)¥,簡(jiǎn)稱字符,printf(Yb=);,9,例2.2 main () char ch; ch=362; printf (%cn,ch); printf (chinan101tn); ,運(yùn)行結(jié)果: 屏幕顯示: china A ,10,5字符串常量,

5、hello“ Programming in C“ “A” “a” “ 把用一對(duì)雙撇號(hào)括起來(lái)的零個(gè)或多個(gè)字符序列稱為字符串常量。 字符串以雙撇號(hào)為定界符,但雙撇號(hào)并不屬于字符串。 要在字符串插入撇號(hào),應(yīng)借助轉(zhuǎn)義字符。 要處理字符串I say: Goodbye! 時(shí),可以把它寫為I say: Goodbye! 。,字符串常量,字符串中的字符數(shù)稱為該字符串的長(zhǎng)度。 字符串常量在機(jī)器內(nèi)存儲(chǔ)時(shí),系統(tǒng)自動(dòng)在字符串的末尾加一個(gè)“字符串結(jié)束標(biāo)志”,它是轉(zhuǎn)義字符“0”。,例 字符串hello在內(nèi)存中,注: 字符與字符串的區(qū)別.,12,6符號(hào)常量,【例2.3】符號(hào)常量舉例 #define PRICE 30 mai

6、n() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,運(yùn)行結(jié)果:total=300,定義:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量 #define 標(biāo)識(shí)符 代表的常量,使用符號(hào)常量的好處是: (1)含義清楚。 (2)在需要改變一個(gè)常量時(shí)能做到“一改全改”。,常用大寫字母, 與變量名區(qū)分開來(lái)。,變量,變量是指在程序的運(yùn)行過(guò)程中,其值可以發(fā)生變化的量,聲明變量的目的:,(1)存放需要加工的初始值,(2)存放加工的中間結(jié)果,(3)存放加工的最終結(jié)果,需要理解的三個(gè)概念,變量名、變量的存儲(chǔ)空間、變量的值,int a=3;,1101 a

7、fff,地址表示,存儲(chǔ)空間,a,變量名,3,變量的值,14,1.變量的聲明 變量聲明的格式為: 數(shù)據(jù)類型符 變量名1,變量2,變量名n;,例如: int x; int y; 或等效為: int x,y;,注意: 定義變量的語(yǔ)句必須以“;”號(hào)結(jié)束,在定義一個(gè)語(yǔ)句中也可以同時(shí)定義多個(gè)變量,變量之間用“,”隔開。 對(duì)變量的定義可以在函數(shù)體之外,也可以在函數(shù)體或復(fù)合語(yǔ)句中。,15,2變量的初始化 C語(yǔ)言允許在說(shuō)明變量的同時(shí)對(duì)其初始化,,int sum=0; /*說(shuō)明變量sum的類型為整型,初始值為0*/ float pi=3.1416; char c=w;,【例2.4】 整型變量的定義和引用。 # i

8、nclude stdio.h main() int x ,y,z,s; /*基本整型變量定義,一次可定義一個(gè)或多個(gè)變量*/ x=3;y=4;z=5; /*整型變量的引用*/ s=x+y+z; /*整型變量的引用*/ printf(ns=%d,s); ,運(yùn)行結(jié)果: S=12,注意: (1)不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長(zhǎng)度的存儲(chǔ)區(qū),而且采用不同的表示方式。 (2)一種數(shù)據(jù)類型對(duì)應(yīng)著一個(gè)值的范圍。 (3)一種數(shù)據(jù)類型對(duì)應(yīng)著一組允許的操作。,16,2.2 標(biāo)識(shí)符和關(guān)鍵字,-標(biāo)識(shí)符 一個(gè)標(biāo)識(shí)符可由字母、數(shù)字和下劃線組成 ; 必須用字母或下劃線開頭; 大小寫要區(qū)分 ; 不能用保留關(guān)鍵字作變量名 ; 避免

9、混淆的字母 ; 例如 : l 與 I, o 與 0.,例:判斷下列標(biāo)識(shí)符號(hào)合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,17,32 個(gè)關(guān)鍵字:(由系統(tǒng)預(yù)定義,具有固定定義,不能另作定義) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static str

10、uct switch typedef unsigned union void volatile while,-關(guān)鍵字,18,2.3 整型數(shù)在計(jì)算機(jī)中的存儲(chǔ)方式,計(jì)算機(jī)系統(tǒng)的內(nèi)存儲(chǔ)器,是由許多稱為字節(jié)的單元組成的,1個(gè)字節(jié)由8個(gè)二進(jìn)制位(bit)構(gòu)成,每位的取值為0/1。 最右端的那1位稱為“最低位”,編號(hào)為0;最左端的那1位稱為“最高位”,而且從最低位到最高位順序,依次編號(hào)。,原碼、反碼和補(bǔ)碼的相關(guān)知識(shí),計(jì)算機(jī)中,所有的整數(shù)都是以補(bǔ)碼的形式進(jìn)行存儲(chǔ)的,正整數(shù)的原碼、反碼和補(bǔ)碼相同,求負(fù)整數(shù)的補(bǔ)碼步驟如下:,(1)求負(fù)整數(shù)的原碼,(2)在原碼的基礎(chǔ)上求反碼,(3)在反碼的基礎(chǔ)上加1,原碼,5的八

11、位二進(jìn)制的原碼為0000 0101,-5絕對(duì)值的八位二進(jìn)制表示為0000 0101,正整數(shù)的原碼是這個(gè)數(shù)本身。,負(fù)整數(shù)的原碼求解方法:,負(fù)整數(shù)的絕對(duì)值用二進(jìn)制表示,最高位用于表示符號(hào),1表示負(fù)整數(shù),0表示正整數(shù)。,求-5的原碼:,1000 0101,-5原碼的八位二進(jìn)制表示:,求5的原碼:,反碼,反碼表示法規(guī)定:,正整數(shù)的反碼和原碼相同,負(fù)整數(shù)數(shù)的反碼是對(duì)該數(shù)的原碼除符號(hào)位外各位取反,求5的反碼:,5的反碼的八位二進(jìn)制為0000 0101,求-5的反碼:,-5的原碼的八位二進(jìn)制表示為1000 0101,-5的反碼的八位二進(jìn)制表示為1111 1010,補(bǔ)碼,補(bǔ)碼表示法規(guī)定:,正整數(shù)的補(bǔ)碼和原碼相

12、同,負(fù)整數(shù)的補(bǔ)碼是在該數(shù)的反碼的基礎(chǔ)上加1,即最后(即最右邊)一位上加1。,求5的補(bǔ)碼:,5的補(bǔ)碼的八位二進(jìn)制為0000 0101,求-5的補(bǔ)碼:,-5的反碼的八位二進(jìn)制表示為1111 1010,-5的補(bǔ)碼的八位二進(jìn)制表示為1111 1011,C 語(yǔ)言中所有的整數(shù)都是以補(bǔ)碼的方式存儲(chǔ)的,例:求-50在內(nèi)存中的存儲(chǔ)結(jié)果(假定用16位來(lái)存儲(chǔ))。,-50絕對(duì)值的原碼:,0000 0000 0011 0010,-50的原碼:,1000 0000 0011 0010,-50的反碼:,1111 1111 1100 1101,-50的補(bǔ)碼:,1111 1111 1100 1110,例:把內(nèi)存中以補(bǔ)碼形式存儲(chǔ)

13、的數(shù)據(jù)1111 1111 1111 0110轉(zhuǎn)化為十進(jìn)制整數(shù)。,數(shù)據(jù)的補(bǔ)碼表示:,1111 1111 1111 0110,除符號(hào)位外,各位取反:,1000 0000 0000 1001,最低位加1:,1000 0000 0000 1010,-10,例:把內(nèi)存中以補(bǔ)碼形式存儲(chǔ)的數(shù)據(jù)1111 1111 1111 0110轉(zhuǎn)化為十進(jìn)制整數(shù)。,數(shù)據(jù)的補(bǔ)碼表示:,1111 1111 1111 0110,除符號(hào)位外,各位取反:,1000 0000 0000 1001,最低位加1:,1000 0000 0000 1010,-10,26,2.4 有符號(hào)的數(shù)據(jù)類型和無(wú)符號(hào)的數(shù)據(jù)類型,27,2.5 運(yùn)算符及表達(dá)式

14、,算術(shù)運(yùn)算符:+ - * / % + - 關(guān)系運(yùn)算符: = != 邏輯運(yùn)算符:! 賦值表達(dá)式的求解過(guò)程: 將賦值運(yùn)算符右側(cè)的表達(dá)式的值賦給左側(cè)的變量。 賦值的含義是將賦值運(yùn)算符右邊的表達(dá)式的值存放到左邊變量名標(biāo)識(shí)的存儲(chǔ)單元中。,29,說(shuō)明: (1)賦值運(yùn)算符左邊必須是變量,右邊可以是常量、變量、函數(shù)調(diào)用或由常量、變量、函數(shù)調(diào)用組成的表達(dá)式。 例如:x=10,y=x+10,y=func()都是合法的賦值表達(dá)式,12=a,2*a=3*5+55都不是合法的賦值表達(dá)式。 (2)賦值符號(hào)“=”不同于數(shù)學(xué)的等號(hào),它沒有相等的含義,“=”才表示相等。 例如:C語(yǔ)言中x=x+1是合法的,而數(shù)學(xué)上不合法。 (3

15、)賦值運(yùn)算時(shí),當(dāng)賦值運(yùn)算符兩邊的數(shù)據(jù)類型不同時(shí),將由系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換。 轉(zhuǎn)換原則是:先將賦值號(hào)右邊表達(dá)式的類型轉(zhuǎn)換為左邊變量的類型,然后賦值。 賦值運(yùn)算符的優(yōu)先級(jí)僅僅高于逗號(hào)運(yùn)算符,具有自右向左的結(jié)合性。,應(yīng)用舉例,【例2.8】有語(yǔ)句 int a=2,b=5,x,y; 執(zhí)行x=y=a+b; 后x,y的值。,a,b,x,y,2,5,7,7,【例2.9】有定義: int a,b,c; 求執(zhí)行表達(dá)式 a=(b=65)/(c=6); 后a的值。,a,b,c,65,6,10,復(fù)合賦值運(yùn)算符,a =b,+,a=a+b,相當(dāng)于,a=a-b,a-=b,a*=b,a=a*b,a/=b,a=a/b,a%=b,

16、a=a%b,相當(dāng)于,相當(dāng)于,相當(dāng)于,相當(dāng)于,y*=a+b;,y=y*(a+b),相當(dāng)于,【例2.10】有定義: int a=6,b=8;求執(zhí)行a*=b+=12后,a的值。,a,6,b,8,b+=12,b=b+12,20,a*=b,a=a*b,120,復(fù)合賦值運(yùn)算符,【例2.11】 有定義:“int a=12;”,執(zhí)行表達(dá)式 a+=a-=a*=a后,a的值為( )。 A12B144C0 D132,a*=a,a,12,a=a*a,144,a-=a,a=a-a,0,a+=a,a=a+a,0,33,2.5.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式,算術(shù)運(yùn)算符包括: +(加),-(減),*(乘),/(除),%(取余)

17、,+(增1運(yùn)算符或稱自增運(yùn)算符),-(減1運(yùn)算符或稱自減運(yùn)算符)。 雙目運(yùn)算符的兩個(gè)操作數(shù)類型可以不同,運(yùn)算前遵循類型的一般算術(shù)轉(zhuǎn)換規(guī)則自動(dòng)轉(zhuǎn)換成相同的類型,運(yùn)算結(jié)果的類型與轉(zhuǎn)換后操作數(shù)的類型相同。 類型的一般算術(shù)轉(zhuǎn)換規(guī)則的基本原則是值域較窄的類型向較寬的類型轉(zhuǎn)換。,算術(shù)運(yùn)算符和算術(shù)表達(dá)式,算術(shù)運(yùn)算符包括:+,-,*,/,%,+,-,左操作數(shù),右操作數(shù),運(yùn)算符,13+5,13.0+5,結(jié)果為整數(shù)18,結(jié)果為浮點(diǎn)數(shù)18.0,d 97,結(jié)果為整數(shù)3,1/2,結(jié)果為整數(shù)0,1.0/2,結(jié)果為浮點(diǎn)數(shù)0.5,5%10,結(jié)果為整數(shù)5,10%5,結(jié)果為整數(shù)0,1/2.0,1.0/2.0,自增、自減運(yùn)算符,+

18、,自增運(yùn)算符,其作用是使變量的值自加1,- -,自減運(yùn)算符,其作用是使變量的值自減1,+i,-i,前綴運(yùn)算:在使用i之前,先使i的值自增(或自減)1,i+,i-,后綴運(yùn)算:在使用i之后,再使i的值自增(或自減)1,【例】有定義: int i=8,j; 求執(zhí)行 j=i+;后i,j的值,i,8,j,8,9,【例】有定義: int i=8,j; 求執(zhí)行 j=+i;后i,j的值,i,j,8,9,9,應(yīng)用舉例,【例2.12】假設(shè)變量i,j,k的值分別為3,5和3,求執(zhí)行表達(dá)式“m=(+k)*j;”和“n=(i+)*j;”中的m和n的值。,i,j,k,m,n,3,5,3,4,20,15,4,應(yīng)用舉例,習(xí)題

19、1、下列算術(shù)運(yùn)算符中,只能用于整型數(shù)據(jù)的是( )。 A- B+ C/ D%,習(xí)題2、假設(shè)有以下變量定義:int k=7,x=12; 則能使值為3的表達(dá)式是( ) Ax%=(k%=5) Bx%=(x-k%5) Cx%=k+k%5 D(k%=5)(x%=k),D,2,0,C,2,38,2.5.3 長(zhǎng)度測(cè)試運(yùn)算符sizeof,長(zhǎng)度測(cè)試運(yùn)算符sizeof可用來(lái)測(cè)試某個(gè)類型的變量所占用計(jì)算機(jī)內(nèi)存空間的字節(jié)長(zhǎng)度。 格式為:sizeof(類型名),例: main( ) printf(char:%d bytesn,sizeof(char); printf(short:%d bytesn,sizeof(shor

20、t); printf(int:%d bytesn,sizeof(int); printf(long:%d bytesn,sizeof(long); printf(float:%d bytesn,sizeof(float); printf(double:%d bytesn,sizeof(double); return 0;,39,2.5.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式,1關(guān)系運(yùn)算符 關(guān)系運(yùn)算實(shí)際上就是比較運(yùn)算,即比較兩個(gè)運(yùn)算對(duì)象值的大小。,注意:,(1)關(guān)系運(yùn)算符為雙目運(yùn)算符,結(jié)合方向?yàn)樽宰笾劣摇?(2)關(guān)系運(yùn)算符的結(jié)果為真(1)或假(0),C語(yǔ)言中沒有 邏輯值。 (3)算術(shù)運(yùn)算符高于關(guān)系運(yùn)算符。,

21、40,2.關(guān)系表達(dá)式 由關(guān)系運(yùn)算符、運(yùn)算對(duì)象以及小括號(hào)組成的表達(dá)式稱為關(guān)系表達(dá)式。 當(dāng)表達(dá)式成立時(shí),返回值為整型值1;當(dāng)表達(dá)式不成立時(shí),返回值為整型值0。,ca+b 等同于c(a+b) a=bc等同于a=(bc) ab!=c等同于(ab)!=c,【例2.14】 請(qǐng)注意下列給出的表達(dá)式及其返回值。 65的返回值是0。 若a=3,b=5,則a=3+10的返回值是0。 若x=90,則x=100的返回值是1。 若x=10,y=15,則x+y=25的返回值是1。 若z=36,則z!=36的返回值是0。,【例2.15】 下列程序運(yùn)行后的結(jié)果為( )。 main() int x; x=1053; print

22、f(%dn,x); ,0,【例2.16】 已知a=3,b=2,c=1,則表達(dá)式ab=c的值為( )。,1,對(duì)于關(guān)系表達(dá)式要注意如下事項(xiàng): 一個(gè)關(guān)系式中含有多個(gè)關(guān)系表達(dá)式時(shí),要注意與數(shù)學(xué)式的區(qū)別。 應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷,因?yàn)閷?shí)數(shù)在內(nèi)中存放時(shí)有一定的誤差。,邏輯運(yùn)算符與邏輯表達(dá)式, 執(zhí)行下列語(yǔ)句 s=+s|+i; 后s和i的值是多少?,i,10,s,0,1,43,【例2.18】 已知year為整型變量,不能使表達(dá)式(year%4=0”,分別執(zhí)行下列語(yǔ)句,s和i的值是多少? s=+s|+i;,答案為:s=1,i=10,【例2.20】 定義:“int x=0,y=0,z=0;”,分別執(zhí)行下列

23、語(yǔ)句后,各變量的值是多少? +x,b+d=1,真,b+d=1,假,b+d=1,b+c,b+c,a+b,a+b,b+c=1,b+c=1,a+b+c+d,a+b+c+d,a+b+c+d=1, scanf(%d,【例2.21】 已定義“int x=4,b=5,y;”,執(zhí)行語(yǔ)句:y=+xb?x:b-+x?+b:x后,x、b、y的值分別為_。,答案為x=6,b=4,y=6,【例2.24】 分析下列程序的輸出結(jié)果。 #include stdio.h void main() int i,j,k,a=3,b=2; i=(-a=b+)?-a:+b; j=a+; k=+b; printf(i=%d,j=%d,k=

24、%dn,i,j,k); ,i=1,j=1,k=4,【例2.25】 請(qǐng)編制程序,任意輸入兩個(gè)整數(shù),輸出其中較小者。 main() int n1,n2,min; clrscr(); printf(input two number(n1,n2): ); scanf(%d,%d, 運(yùn)行時(shí),按屏幕提示操作: input two number(n1,n2):3,5 結(jié)果為: min=3,【例2.26】 編制程序,輸入大寫字母,則輸出小寫字母;輸入小寫字母,則輸出大寫字母。 main() char ch; printf(input any letter: ); scanf(%c, 運(yùn)行時(shí),按屏幕提示操作:

25、input any letter:G 結(jié)果為: output :g 再運(yùn)行: input any letter:e 則結(jié)果為: output :E,應(yīng)用舉例,例2.23、已定義“int x=4,b=5,y;”, 執(zhí)行語(yǔ)句:y=+xb?x:b-+x?+b:x后, x、b、y的值分別為_。,x,y,b,4,5,5,5,4,6,6,6,習(xí)題:找出三個(gè)整形數(shù)據(jù)的最大數(shù),int a,b,c ;,scanf(%d%d%d,max,ab? a : b ;,(ac?a:c),(bc?b:c),max=,47,2.5.7 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式,逗號(hào)運(yùn)算符,又稱“順序求值運(yùn)算符”。 逗號(hào)表達(dá)式的一般形式為: 表

26、達(dá)式1,表達(dá)式2或表達(dá)式1,表達(dá)式2,表達(dá)式3,表達(dá)式n; 運(yùn)算過(guò)程是:自左至右依次計(jì)算表達(dá)式1,表達(dá)式2,表達(dá)式n的值,而整個(gè)逗號(hào)表達(dá)式的值取最后的表達(dá)式n的值。,【例2.27】 分析下列逗號(hào)表達(dá)式的計(jì)算過(guò)程及結(jié)果。 3+5,6*3 表達(dá)式的值是18。 a=(3+5,6*3) a的值是18,此為賦值表達(dá)式。 a=3+5,6*3 a的值是8,表達(dá)式的值是18(先作賦值運(yùn)算)。 a=3+5,6*a a的值是8,表達(dá)式的值是48。 (a=3+5,6*a),a+100a的值是8,表達(dá)式的值是108。,使用逗號(hào)表達(dá)式應(yīng)該注意如下事項(xiàng): 逗號(hào)表達(dá)式可以和另外一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式。 并不是在所

27、有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式。如在變量說(shuō)明中和函數(shù)參數(shù)表中的逗號(hào)只是用做個(gè)變量之間的間隔符。,48,2.5.7 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式,【例2.27】下面是給字符變量賦值的六種方式,仔細(xì)體會(huì)字符數(shù)據(jù)的表示方法和逗號(hào)表達(dá)式的用法。 #include stdio.h main( ) char c1, c2, c3, c4, c5, c6; c1=A, c2=x41, c3=101, c4=65, c5=0 x41, c6=0101; printf(%c, %c, %c, %c, %c, %c n, c1, c2, c3, c4, c5, c6); printf(%d, %d, %d, %d,

28、%d, %d n, c1, c2, c3, c4, c5, c6); return0; ,49,2.5.8 位運(yùn)算,位運(yùn)算的作用是對(duì)運(yùn)算對(duì)象按照二進(jìn)制位進(jìn)行操作的運(yùn)算; 它能夠?qū)ψ止?jié)或字中的實(shí)際位進(jìn)行檢測(cè)、設(shè)置或位移; 它運(yùn)算的對(duì)象只能是字符型或整型變量以及它們的變體,對(duì)其他類型的數(shù)據(jù)不適用。,50,1.位運(yùn)算符,位運(yùn)算符還可以與賦值運(yùn)算符相結(jié)合,成為位運(yùn)算賦值操作。,51,2.位運(yùn)算的功能,(1)按位取反()。是單目運(yùn)算符,用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,也就是說(shuō)將原來(lái)的0變?yōu)?,1變?yōu)?。,【例2.25】 分析下列程序的輸出結(jié)果。 void main() unsigned char a,b;

29、a=0 x9a; b=a; printf (a:%x b:%xn,a,b); ,運(yùn)行結(jié)果為: a:9a b:65,52,(2)按位與( x=x ,解析:假如x的值為00101011,x后為11010100,則 00101011 x=B; x=x|0 x80; printf (%dn,x); ,解析:字符B的二進(jìn)制碼為01000010,經(jīng)過(guò)運(yùn)算x=x|0 x80后,x的值為11000010,由于它是補(bǔ)碼存儲(chǔ),以十進(jìn)制數(shù)輸出結(jié)果為-62。,54,按位異或( )。異或運(yùn)算符也稱XOR運(yùn)算符。 它的作用是判斷兩個(gè)相應(yīng)位的值是否“相異”(不同),若相異則結(jié)果為1(真),否則為0。 即:0 0=0,0 1=1,1 0=1,1 1=0。,按位異或有以下應(yīng)用: 1)使特定位翻轉(zhuǎn)。假設(shè)有01000010,想使低4位翻轉(zhuǎn),只要與00001111異或,異或后的結(jié)果為01001101。 2)與0相異或保留原值。例如,0111101000000000的結(jié)果為01111010。又如,對(duì)負(fù)數(shù)的補(bǔ)碼A求反碼的方法是此數(shù)A與7FH異或,即77FH。 3)不用中間變量就可以交換兩個(gè)數(shù)的值。,程序運(yùn)行后的結(jié)果為: a=4 b=3,55,(5)位移(左移)。 1)左移()。 a=a2表示將a的各二進(jìn)制位右移

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論