數(shù)據(jù)類型運(yùn)算符和表達(dá)式.ppt_第1頁(yè)
數(shù)據(jù)類型運(yùn)算符和表達(dá)式.ppt_第2頁(yè)
數(shù)據(jù)類型運(yùn)算符和表達(dá)式.ppt_第3頁(yè)
數(shù)據(jù)類型運(yùn)算符和表達(dá)式.ppt_第4頁(yè)
數(shù)據(jù)類型運(yùn)算符和表達(dá)式.ppt_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

,第二章,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,什么是數(shù)據(jù)類型?,數(shù)據(jù)結(jié)構(gòu)+算法=程序,C語(yǔ)言中以 “數(shù)據(jù)類型”形式存在,對(duì)數(shù)據(jù)的描述,對(duì)操作的描述,2.1 C語(yǔ)言的基本數(shù)據(jù)類型,C語(yǔ)言提供了以下一些數(shù)據(jù)類型。,數(shù)據(jù)類型,指針類型,空類型(無(wú)值類型) void,基本類型,概念:在程序運(yùn)行過程中,其值不能被改變的量。在程序中以兩種形式出現(xiàn):直接常量(字面常量)和符號(hào)常量。,2.2.1整型常量 (1)十進(jìn)制整數(shù)。 如:123, -456,4。 045,12D (2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù),通常是無(wú)符號(hào)數(shù)。 如:0123,073,0101。017777。 256,03A2 (3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù),通常是無(wú)符號(hào) 數(shù)。 如:0x123, 0xffff。 023, 23D ,2.2 常量,兩種表示形式,小數(shù) 0.123 指數(shù) 3e-3,注意:字母e(或E)之前必須有數(shù)字,且e/E后面的指數(shù)必須為整數(shù):,1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e ,2.2.2 實(shí)型常量,規(guī)范化的指數(shù)形式: 在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字。 例如: 123.456可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。,2.2.3 字符常量,(1)用單引號(hào)括起來的一個(gè)字符是字符型常量 (2)只能包含一個(gè)字符,例,a,A, 1 abc、“a” ,語(yǔ)言還允許使用一種特殊形式的字符常量,就是以反斜杠“ “開頭的轉(zhuǎn)義字符。,例2.1轉(zhuǎn)義字符的使用 #include void main() int a,b,c; a=1;b=2;c=3; printf(“%dnt%d%dn%d%dtb%dn”,a,b,c,a,b,c); ,顯示屏上的運(yùn)行結(jié)果: 1 23 12 3,2.2.4 字符串常量,字符串常量是一對(duì)雙撇號(hào)括起來的字符序列 合法的字符串常量: “How do you do.”, “CHINA”, “a” , “$123.45” 可以輸出一個(gè)字符串,如 printf(“How do you do.”);,字符與字符串的區(qū)別有哪些?,2.2.5 符號(hào)常量,用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。,格式:#define 常量名 字面常量 舉例:#define PRICE 100 #define PI 3.14 #define C1 a,習(xí)慣上常量名用大寫,符號(hào)常量的定義放在 函數(shù)外面。,例2.2符號(hào)常量的使用 #define PRICE 30 #include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn ,total); ,標(biāo)識(shí)符就是一個(gè)名字,在程序執(zhí)行過程中,可以改變的量稱為變量。,1、標(biāo)識(shí)符就是一個(gè)名字(如常量名、變量名、函數(shù)名)。 2、組成:只能由字母、數(shù)字、下劃線組成。且第一個(gè)字符必須為字母或下劃線。 例:sum,_total, month, Student_name, BASIC, li_ling M.D.John, ¥123,3D64,ab 3、C語(yǔ)言的關(guān)鍵字不能用作變量名。 4、在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞 (或其縮寫)作標(biāo)識(shí)符。 例如,name(姓名)、age(年齡) 5、建議變量名的長(zhǎng)度最好不要超過8個(gè)字符。,標(biāo)識(shí)符,2.3 變量,2.3.1 整型變量,類型 類型說明符 長(zhǎng)度 數(shù)的范圍 基本型 int 2字節(jié) -3276832767 短整型 short 2字節(jié) -215215-1 長(zhǎng)整型 long 4字節(jié) -231231-1 無(wú)符號(hào)整型 unsigned 2字節(jié) 065535 無(wú)符號(hào)短整型 unsigned short 2字節(jié) 065535 無(wú)符號(hào)長(zhǎng)整型 unsigned long 4字節(jié) 0(232-1),1、 整型變量的分類,2、 整型變量的說明 程序中用到的變量必須“先說明,后使用”。,變量說明的一般格式:類型說明符 變量名,變量名,; 例如: int a,b;(指定變量、為整型) unsigned short c,d;(指定變量、為無(wú)符號(hào)短整型) long e,f;(指定變量、為長(zhǎng)整型),3、 整型常量的后綴,(1)一個(gè)整數(shù),如果其值在-32768+32767范圍內(nèi),認(rèn)為它是int型。 (2) 一個(gè)整數(shù),如果其值超過了上述范圍,而在-2147483637+2147483647范圍內(nèi),則認(rèn)為它是為長(zhǎng)整型。 (3) 一個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsigned int型,如12345u。 4)在一個(gè)整常量后面加一個(gè)字母l或L,則認(rèn)為是long int型常量。 例如: 123l 432L 0L,2.3.2 實(shí)型變量,類型 位數(shù) 數(shù)的范圍 有效數(shù)字 float 32 10-37 1038 67 位 double型 64 10-30710308 1516位 long double 128 10-4931104932 1819位,1、實(shí)型變量的分類(單精度型、雙精度型、長(zhǎng)雙精度型),2、實(shí)型變量的說明 float a,b; (指定變量a,b為單精度型) double c,d; (指定變量c,d為雙精度型),3、實(shí)型常量的后綴 實(shí)型常數(shù),系統(tǒng)按雙精度來處理,但如是在數(shù)的后面加字母f或F(如1.65f, 64.87F),這樣編譯系統(tǒng)就會(huì)把它們按單精度處理。,例2.3 float 和double的應(yīng)用 #include void main( ) float a; doubleb; a = 5555.55555; b = 5555.5555555555 ; printf(“%fn%f”,a,b); ,2.3.3 字符型變量 字符型變量用來存放字符常量,注意只能放一個(gè)字符。 字符變量的定義形式如下:char c1,c2; 可以用下面語(yǔ)句對(duì)c1,c2賦值: c1a;c2b ; 一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。,將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字 符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼 放到存儲(chǔ)單元中。 例:字符變量ch中存放字符a,其ASCII碼為97,在內(nèi)存中以二進(jìn)制形式存放,其格式如下:,ch,0 1 1 0 0 0 0 1,注意:字符型數(shù)據(jù)與整型數(shù)據(jù)在存儲(chǔ)方式上的相似性使得兩者之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。但字符型數(shù)據(jù)的表示范圍是:0255。,例2.4 向字符變量賦以整數(shù)。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); ,說明:在第和第4行中,將整數(shù)和分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句: c1a;c2 b; 因?yàn)閍和b的ASCII碼為97和98,運(yùn)行結(jié)果: 97 98,例2.5 大小寫字母的轉(zhuǎn)換 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c c,c1,c2); ,說明:程序的作用是將兩個(gè)小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASC II代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的ASC II碼大。語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。,運(yùn)行結(jié)果: ,2.4 運(yùn)算符與表達(dá)式,的運(yùn)算符有以下幾類:,2.4.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1、算術(shù)運(yùn)算符 + (加法運(yùn)算符,或正值運(yùn)算符,如:、) - (減法運(yùn)算符,或負(fù)值運(yùn)算符,如:、) * (乘法運(yùn)算符,如:*) / (除法運(yùn)算符,如:) % (模運(yùn)算符,或稱求余運(yùn)算符,如:的值為) + (自增運(yùn)算符,如:i+、+i) - (自減運(yùn)算符,如:i-,-i),雙目運(yùn)算符 左結(jié)合,單目運(yùn)算符 右結(jié)合,自增、自減運(yùn)算符 作用是使變量的值增或減 如: +i(在使用i之前,先使i的值加1) -i(在使用i之前,先使i的值減1) i+(在使用i之后,使i的值加1) i-(在使用i之后,使i的值減1),注意:兩個(gè)整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。 當(dāng)商為負(fù)數(shù)時(shí),多采用“向零取整”的方法。 例: 5/3=1 -5/3= -1 求余運(yùn)算的兩側(cè)均應(yīng)為整數(shù) 例:5%3=2,例:假設(shè)i,j均已說明,且i=3; j=+i; i的值先變成4, 再賦給j, j的值也為4 j=i+; 先將i的值3賦給j, j的值為3,然后i變?yōu)?,例2.7 自增、自減運(yùn)算符的應(yīng)用 #include “stdio.h” void main( ) int i,m,n,j,k; i=10; m=i+;n=+i; j=i- -;k=-I; printf(“%d,%d,%d,%dn”,m,n,j,k); ,2、算術(shù)表達(dá)式 用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合語(yǔ)法規(guī)則的式子,稱為算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。 例如: a*b/c-1.5a 是一個(gè)合法的表達(dá)式。,2.4.2 賦值運(yùn)算符與賦值表達(dá)式,1、簡(jiǎn)單賦值運(yùn)算符與賦值表達(dá)式 賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“=”的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量賦給變量。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。 如:b=4; a=b+3; 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。 一般形式為: 例如: “5”是一個(gè)賦值表達(dá)式,2、變量賦初值,(1)語(yǔ)言允許在定義變量的同時(shí)使變量初始化。 如:int a=3; / 指定為整型變量,初值為 float f=3.56; / 指定為浮點(diǎn)型變量,初值為 3.56 char c=a; / 指定為字符變量,初值為a (2)可以使被定義的變量的一部分賦初值。 如:int a,b,c=5;表示指定a、b、c為整型變量,但只對(duì)初始化,c的初值為。 相當(dāng)于:int a,b,c; c=5; (3)如果對(duì)幾個(gè)變量賦以同一個(gè)初值, 應(yīng)寫成:int a=3,b=3,c=3; 表示a、b、c的初值都是。 不能寫成int a=b=c=3;,3、類型轉(zhuǎn)換,賦值表達(dá)式要求左右兩邊的數(shù)據(jù)類型要相同,如果不一致,在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。包括自動(dòng)轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換兩種方法。,(1)自動(dòng)類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則,若參與運(yùn)算的運(yùn)算量類型不同,則先轉(zhuǎn)換成同一種類型,然后進(jìn)行運(yùn)算; 轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低; 所有實(shí)型運(yùn)算都以雙精度進(jìn)行,即使僅含float型,也要先轉(zhuǎn)換成double型,再運(yùn)算。 char和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換為int型。 在賦值運(yùn)算中,賦值符號(hào)兩邊的數(shù)據(jù)類型不同時(shí),把賦值號(hào)右邊的類型自動(dòng)換成左邊變量的類型。,10+a+i*f-d/e,若int i; float f;double d; long e;i=2; f=2.5; d=3.9; e=3; 下邊表達(dá)式的值是多少?,?,例2.9自動(dòng)轉(zhuǎn)換類型的應(yīng)用 #include “stdio.h” void main() int a,b; float x=23.54; char c1=d; a=x;b=c1; printf(“%d,%dn”,a,b); ,(2) 強(qiáng)制類型轉(zhuǎn)換,可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。 一般形式:() 例如: (double) 將轉(zhuǎn)換成double類型 (int)(x+y) 將x+y的值轉(zhuǎn)換成整型 (float)(5%3) 將5%3的值轉(zhuǎn)換成float型,例2.10 強(qiáng)制類型轉(zhuǎn)換。 #include void main( ) float x; int i; =3.6; i=(int)x; printf(“x=%f,i=%dn“,x,i); ,運(yùn)行結(jié)果: x3.600000, i=3,說明:有兩種類型轉(zhuǎn)換,一種是在運(yùn)算時(shí)不必用戶指定,系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換,如3+6.5。第二種是強(qiáng)制類型轉(zhuǎn)換。當(dāng)自動(dòng)類型轉(zhuǎn)換不能實(shí)現(xiàn)目的時(shí),可以用強(qiáng)制類型轉(zhuǎn)換。,4、復(fù)合賦值運(yùn)算符及表達(dá)式,在賦值符“”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。 例如: a+=3 等價(jià)于 a=a+3 x*=y+8 等價(jià)于 x=*(y+8) x%=3 等價(jià)于 x=x%3,以“”為例來說明,它相當(dāng)于使進(jìn)行一次自加()的操作。即先使加,再賦給。,注意:如果是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。 如: x%=y+3 x%=(y+3) x=x%(y+3)(不要錯(cuò)寫成x=x%y+3),5、對(duì)賦值表達(dá)式求解的過程 求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值; 賦給賦值運(yùn)算符左側(cè)的變量。 例如: 賦值表達(dá)式“=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。,賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式。例如: a=(b=5) 分析:請(qǐng)分析下面的賦值表達(dá)式(a=3*5)=4*3 賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。如:a+=a-=a*a 分析:若a的初值為12,則執(zhí)行上述表達(dá)式后a=,?,能否寫成: a=3*5=4*3,2.4.3 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式,逗號(hào)運(yùn)算符: 將兩個(gè)或多個(gè)表達(dá)式連接起來,又稱為“順序求值運(yùn)算符”。 如:5,,逗號(hào)表達(dá)式的一般形式: 表達(dá)式,表達(dá)式,表達(dá)式,表達(dá)式,求解過程: 從表達(dá)式開始求解,逐個(gè)求解表達(dá)式、表達(dá)式3、表達(dá)式n;整 個(gè)逗號(hào)表達(dá)式的值是表達(dá)式n的值。,逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的。 例: (1)*5,* (2)(*,*),a+5 (3) (,*) (4),*3,注意:并不是任何地方出現(xiàn)的逗號(hào) 都是作為逗號(hào)運(yùn)算符。例如函數(shù) 參數(shù)也是用逗號(hào)來間隔的。 如: printf(“%d,%d,%d”,a,b,c);,2.4.5 關(guān)系運(yùn)算符和關(guān)系表達(dá)式,關(guān)系運(yùn)算符及其優(yōu)先次序(從左到右) (大于) = (大于或等于) = (等于) != (不等于),優(yōu)先級(jí)別:,如:ca+b a=bc a=bc,c(a+b) a=(bc) a=(bc),關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式)接起來的式子,稱關(guān)系表達(dá)式 例:ab, a+bb+c, (a=3)(b=5), ab)(bb”的值為“真”,表達(dá)式的值為1。,已知: (a=3 b=2 c=1 d=0),0,a=bc,d=ab+c,1,d=ab+c?,思考,C語(yǔ)言中沒有專用的邏輯值,1代表真,0代表假,例2.13 用C表達(dá)式描述下列條件 (1)整數(shù)x為偶數(shù); (2)整數(shù)m不是n的倍數(shù);,X%2=0,m%n!=0,2.4.6 邏輯運(yùn)算符和邏輯表達(dá)式,1.邏輯運(yùn)算符及其優(yōu)先次序 (1) & (邏輯與) (2) | (邏輯或) (3) ! (邏輯非),優(yōu)先次序:賦值 | & 關(guān)系 算術(shù) !,2.邏輯表達(dá)式 用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就 是邏輯表達(dá)式。 邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。,例:a&b 若a,b為真,則a&b為真(1) 。 a|b 若a,b之一為真,則a|b為真(1) 。 !a 若a為真,則!a為假(0) 。,例:設(shè)a=4,b=5: !a的值為0 a&b的值為1 a|b的值為1 !a|b的值為1 4&0|2的值為1 ! a & (53) | b的值為1,任何非零的數(shù)值被認(rèn)作“真”,例:(m=ab)&(n=cd) 當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時(shí),由于“ab”的值為0,因此 m=0,而“n=cd”不被執(zhí)行,因此n的值不是0而仍保持原值1。,在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。 (1)a&b&c 只有a為真時(shí),才需要判斷b的值,只有a和b都為真時(shí),才需 要判斷c的值。 (2)a|b|c 只要a為真,就不必判斷b和c的值,只有a為假,才判斷b。 a和b都為假才判斷c,2.4.4 條件運(yùn)算符和條件表達(dá)式,條件運(yùn)算符是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符。 格式: 表達(dá)式?表達(dá)式表達(dá)式 執(zhí)行過程: 先求解表達(dá)式,若為真,則求解表達(dá)式,此時(shí)表達(dá)式的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式的值假,則求解表達(dá)式,表達(dá) 式的值就是整個(gè)條件表達(dá)式的值。 條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符 ,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。,例2.12 輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。 #include void main ( ) char ch; scanf(“%c“, ,2.5 位運(yùn)算符與位運(yùn)算,所謂位運(yùn)算,就是參與運(yùn)算的量按二進(jìn)制進(jìn)行運(yùn)算。,語(yǔ)言提供的位運(yùn)算符有:,運(yùn)算符 含義 運(yùn)算符 含義 按位與 取反 | 按位或 右移,(1)位運(yùn)算符中除以外,均為雙目(元)運(yùn)算符,即要求兩側(cè)各有一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論