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

下載本文檔

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

文檔簡(jiǎn)介

第2章 數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式,C語(yǔ)言的數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型分類(lèi)意義 跟存儲(chǔ)空間(占用的存儲(chǔ)空間字節(jié)數(shù)不同,例如char類(lèi)型占1個(gè)字節(jié),int占4個(gè)字節(jié)) 取值范圍(取值類(lèi)型及取值范圍不同) 運(yùn)算類(lèi)型(可以進(jìn)行的運(yùn)算類(lèi)型不同,例如%運(yùn)算符要求操作數(shù)為整型),C語(yǔ)言數(shù)據(jù)類(lèi)型,常量與變量,常量:在程序運(yùn)行過(guò)程中值不可改變 整形常量,例如1234,58等; 實(shí)型常量,例如3.14,-2.58等; 字符常量,例如A, 5, +等; 宏常量(符號(hào)常量),用一個(gè)符號(hào)名代表一個(gè)常量,用define定義,例2.1 #include #define PRICE 30 /*此行和上面這行的順序可以交換*/ void main() int num,total; num=10; total=num*PRICE; printf(“total=%dn“,total); ,運(yùn)行結(jié)果為 total=300 Press any key to continue 在程序編譯之前,會(huì)有一個(gè)編譯預(yù)處理的過(guò)程,這時(shí)編譯系統(tǒng)會(huì)用30來(lái)代替PRICE,實(shí)質(zhì)是文本替換 使用字符常量好處: 含義清楚,例如用PI來(lái)表示3.14 需要修改字符常量值時(shí),只需要修改一處就可以,使用字符常量注意問(wèn)題,格式為#define 宏名 替換文字,編譯預(yù)處理會(huì)用“替換文字”來(lái)代替“宏名”,注意宏名和替換文字的先后順序; “替換名字”可以帶空格,例如 #define HELLO printf(“hello“); printf(“hello“); 不作語(yǔ)法檢查,用雙引號(hào)括起不進(jìn)行替換,如printf(“PI”);不進(jìn)行替換; 宏定義不是可執(zhí)行語(yǔ)句,不用分號(hào)結(jié)束,如果帶分后,連分號(hào)也作為“替換文字”的一部分 符號(hào)常量常用大寫(xiě),以區(qū)別于變量,變量:在程序運(yùn)行過(guò)程中值可以改變 變量的名字必須符合標(biāo)識(shí)符的命名規(guī)定,C語(yǔ)言有3種類(lèi)型的標(biāo)識(shí)符 關(guān)鍵字:已被固定為特定意義,不可用作標(biāo)識(shí)符,例如int,float,long等 系統(tǒng)預(yù)定義的標(biāo)識(shí)符:包括系統(tǒng)提供的庫(kù)函數(shù)名,例如scanf,printf等,以及編譯預(yù)處理命令define等,建議不要用作變量名,否則容易引起混亂; 用戶(hù)標(biāo)識(shí)符:除此之外的,以字母或者下劃線(xiàn)開(kāi)頭,以字母、數(shù)字、下劃線(xiàn)構(gòu)成的字符串,可用作變量、函數(shù)、符號(hào)常量、數(shù)組、結(jié)構(gòu)體等名字,標(biāo)識(shí)符,合法的標(biāo)識(shí)符:sum, average,_total,Student_name,_123等 不合法的標(biāo)識(shí)符:M.John, $123, #22, 1234,ab等 注意: 標(biāo)識(shí)符區(qū)分大小寫(xiě),例如Sum和sum是兩個(gè)不同的標(biāo)識(shí)符,變量一般采用小寫(xiě),一般取名要做到“見(jiàn)名知意”,例如sum,average,total等; 不同的編譯系統(tǒng)對(duì)變量名的長(zhǎng)度有不同的規(guī)定; 變量必須先定義后使用,例如int a;定義了一個(gè)整形的變量,名字為a,整形數(shù)據(jù),整型常量的表示形式 可用八進(jìn)制(數(shù)字0開(kāi)頭),十進(jìn)制,和十六進(jìn)制(0x或者0X開(kāi)頭)表示。如果數(shù)據(jù)范圍在 -3276832767之間,認(rèn)為是int類(lèi)型;如果超過(guò)此范圍,認(rèn)為是long類(lèi)型; 長(zhǎng)整型后添加l或者L,如1234567L; 無(wú)符號(hào)整形常量后跟u或者U; 無(wú)符號(hào)長(zhǎng)整型后加LU,lu,LU,lU之一。,整型變量,整型變量可以存放整數(shù),有三種類(lèi)型 基本整形,用int定義,例如int a; 短整型,用short int或者short定義; 長(zhǎng)整型,用long int或long定義,整形變量的長(zhǎng)度及存儲(chǔ)數(shù)據(jù)的范圍,對(duì)于turbo系統(tǒng),shor及int類(lèi)型長(zhǎng)度為2字節(jié),范圍為 -3276832767;long類(lèi)型長(zhǎng)度為4字節(jié),范圍為-215215-1(約21億) 對(duì)于VC+6.0系統(tǒng),shor類(lèi)型長(zhǎng)度為2字節(jié),范圍為-3276832767;int及l(fā)ong類(lèi)型長(zhǎng)度為4字節(jié),范圍為 -215215-1(約21億) 如果在int或者short int、long int前面加上unsigned修飾符,表示無(wú)符號(hào)數(shù),表示正數(shù)的范圍擴(kuò)大一倍(不能存儲(chǔ)負(fù)數(shù)),例如unsigned int范圍為065535 如果在int或者short int、long int前面加上signed修飾符,表示有符號(hào)數(shù),此時(shí)signed符號(hào)可以省略,也就是signed int與int等價(jià);,6種整型變量的定義方法:(方括號(hào)表示可以省掉不寫(xiě)) signed int/shortint/longint 或者unsigned int/shortint/longint 如果不知道具體編譯系統(tǒng)對(duì)變量分配多少字節(jié)的存儲(chǔ)空間,可以用sizeof運(yùn)算符,例如printf(“%dn“,sizeof(int);,整型數(shù)據(jù)在內(nèi)存中的存放形式:用補(bǔ)碼形式表示,參看數(shù)字電路相關(guān)章節(jié) 整形數(shù)據(jù)的溢出:在編程時(shí)注意各種存儲(chǔ)變量存儲(chǔ)數(shù)據(jù)的范圍即可,浮點(diǎn)型數(shù)據(jù),浮點(diǎn)型常量的表示形式 浮點(diǎn)型常量也就是實(shí)型常量,帶有小數(shù)點(diǎn)的常數(shù); 3 +3 -3 .3 3.都是合法實(shí)型常量; 可以寫(xiě)成指數(shù)形式,格式為 小數(shù)或整數(shù) E(或e)整數(shù)的形式,左邊的有效數(shù)字不可省,指數(shù)必須為整數(shù)。如3.0e6,-3.0e-6都是合法的。E3,1e0.3不合法。 實(shí)型常量的確定:實(shí)型常量隱含為double,要確定為單精度f(wàn)loat須添加f或者F;長(zhǎng)雙精度long double在數(shù)值后添加L或者l,如1.25L。,浮點(diǎn)型變量,3種浮點(diǎn)型變量:float,double,long double 其中float占用4字節(jié),范圍是10-381038,有效位數(shù)為7位(注意不是指小數(shù)位數(shù));double占用8字節(jié),范圍是10-30810308,有效位數(shù)為1516位;不同的編譯系統(tǒng)對(duì)long double類(lèi)型有不同的處理方式,如果按16字節(jié)存儲(chǔ),范圍是10-4932104932,有效位數(shù)為1819位。 浮點(diǎn)數(shù)提供的有效數(shù)字是有限的,精度也是有限的,超過(guò)該變量能表示的精度范圍,將會(huì)產(chǎn)生誤差,字符型數(shù)據(jù),字符常量 字符常量書(shū)寫(xiě)方式有幾種方式: 可用鍵盤(pán)輸入的字符用一對(duì)單撇號(hào)括起來(lái),如a,* ,+等 轉(zhuǎn)義字符:n(換行),“(雙撇號(hào))等; ddd,或者xhh,ddd為13位八進(jìn)制數(shù)值,hh為12位16進(jìn)制數(shù)值代表的字符,這種方法可以表示任意字符常量; 詳細(xì)詳表見(jiàn)P27,表2-2. 字符變量 字符變量占用一個(gè)字節(jié)的存儲(chǔ)空間,可以存放一個(gè)字符,例如char ch;ch= A;,字符數(shù)據(jù)的存儲(chǔ)形式及使用方法,字符變量存儲(chǔ)實(shí)際上是一個(gè)字符的ascii碼,例如字符A的ascii碼為65,那么ch= A;與ch= 65的作用是一樣的; 字符數(shù)據(jù)可以按字符的形式輸出(%c),也可以按整數(shù)形式輸出;可以按整數(shù)或者字符形式賦值; 可以把字符變量當(dāng)作整形變量,可以參加整形變量可以參加的各種運(yùn)算,例如算術(shù)運(yùn)算。只是它只占用一個(gè)字節(jié),存儲(chǔ)數(shù)據(jù)的范圍是-128127,如果定義為unsigned char,存儲(chǔ)數(shù)據(jù)的范圍就是0255; ASCII表中并不是所有的字符都能打印出來(lái),有的只是控制字符,是打印不出來(lái)的。另外范圍是ASCII碼范圍是128255的字符,由于字節(jié)里最高位是1,跟漢字的存儲(chǔ)方式有沖突,所以不一定能在顯示器上顯示出來(lái)。,例2.6向字符變量賦予整數(shù),例2.6向字符變量賦予整數(shù) #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn“,c1,c2); printf(“%d %dn“,c1,c2); 運(yùn)行結(jié)果是 a b 97 98 Press any key to continue,例2.7大小寫(xiě)字母的轉(zhuǎn)換,#include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %cn“,c1,c2); 運(yùn)行結(jié)果為: A B Press any key to continue,字符串常量,字符串常量是用一對(duì)雙撇號(hào)括起來(lái)的字符序列(可以含有空格),例如“%d%c“, “hello“。 注意字符常量A和字符串常量“A“是不同的,不可把字符串常量賦給字符變量,C語(yǔ)言沒(méi)有字符串變量,可以用數(shù)組來(lái)存儲(chǔ)字符串。 編譯系統(tǒng)自動(dòng)在字符串后添加字符串結(jié)束標(biāo)志0,如字符串“hello“在內(nèi)存中的存儲(chǔ)方式是,各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算,字符型、整型(int,short,long)與浮點(diǎn)型(float,double,long double)數(shù)值之間可以進(jìn)行混合運(yùn)算。在運(yùn)算時(shí)候,不同類(lèi)型的數(shù)據(jù)會(huì)被系統(tǒng)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,精度等級(jí)會(huì)提高。轉(zhuǎn)換規(guī)律如下:,橫向方向表示必定的轉(zhuǎn)換,即使是兩個(gè)char類(lèi)型的變量,也會(huì)轉(zhuǎn)換成int類(lèi)型; 縱向方向表示類(lèi)型不同則轉(zhuǎn)換,如一個(gè)int類(lèi)型,一個(gè)long類(lèi)型,就把int類(lèi)型提升成long類(lèi)型, int,unsigned,long,double只表示轉(zhuǎn)換的方向,不表示轉(zhuǎn)換依次進(jìn)行。例如int類(lèi)型與double進(jìn)行運(yùn)算,就會(huì)把int一次性提升到double類(lèi)型,而不需要經(jīng)過(guò)unsigned和long的中間步驟。,運(yùn)算結(jié)果為整個(gè)算式里等級(jí)最高的那一種類(lèi)型。 例如i為int類(lèi)型,f為float類(lèi)型,d為double類(lèi)型,e為long類(lèi)型,有以下算式 10+a+i*f-d/e 按照運(yùn)算優(yōu)先級(jí), 先算10+a,則a被提升為int類(lèi)型,運(yùn)算結(jié)果107,為int類(lèi)型; 再算i*f,f必定會(huì)被提升為double類(lèi)型,那么i也會(huì)被提升為double類(lèi)型; 第1步得到的結(jié)果107為int類(lèi)型,被提升為double類(lèi)型,跟第2步結(jié)果運(yùn)算,結(jié)果是double類(lèi)型; e被提升為double,再計(jì)算d/e,運(yùn)算結(jié)果為double; 第3步跟第4步結(jié)果相減,結(jié)果為double類(lèi)型。,算術(shù)運(yùn)算符和算術(shù)表達(dá)式,C運(yùn)算符:C語(yǔ)言的運(yùn)算符范圍很廣,把除了控制語(yǔ)句和輸入輸出以外幾乎所有的操作都作為運(yùn)算符處理,如算術(shù)運(yùn)算符(+ - * / %)、關(guān)系運(yùn)算符( = 0),邏輯表達(dá)式(如x0 )。,算術(shù)運(yùn)算符,+(加法運(yùn)算符,或者正值運(yùn)算符) -(減法運(yùn)算符,或者負(fù)值運(yùn)算符) *(乘法) /(除法)如3/2的值為1,舍去小數(shù)部分。如果想計(jì)算結(jié)果包含小數(shù),則可以寫(xiě)成3.0/2或者3/2.0或者3.0/2.0的形式。 %(模運(yùn)算符或稱(chēng)求余運(yùn)算符),如7%4的值為3。%號(hào)兩邊應(yīng)該為整數(shù),結(jié)果符號(hào)與被除數(shù)相同,例如7%-4的值為3,-7%4的值為-3。,算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性,用算術(shù)運(yùn)算符和括號(hào)將操作數(shù)連接起來(lái),、符合C語(yǔ)法規(guī)則的式子,稱(chēng)為C算術(shù)表達(dá)式,例如a*b/c-1.5+ a C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。先按優(yōu)先級(jí)進(jìn)行運(yùn)算,優(yōu)先級(jí)相同的,再看結(jié)合性。算術(shù)運(yùn)算為左結(jié)合性,也就是從左往右進(jìn)行計(jì)算。 例如表達(dá)式a-b*c,乘法優(yōu)先級(jí)比減法優(yōu)先級(jí)高,先算乘法,再算減法。表達(dá)式a-b+c,b左右兩側(cè)的運(yùn)算符優(yōu)先級(jí)相等,但表達(dá)式按照從左到右的方向進(jìn)行運(yùn)算。 有的運(yùn)算符(如+,-)是右結(jié)合性。詳見(jiàn)附錄C。,強(qiáng)制類(lèi)型轉(zhuǎn)換,作用:轉(zhuǎn)換原有類(lèi)型后再使用,但不修改原先定義的屬性 格式:(類(lèi)型名)(表達(dá)式) 例如(double)a (int)(x+y) (double)5 注意,如果(int)(x+y)寫(xiě)成(int)x+y,那么被強(qiáng)制轉(zhuǎn)換的是x,而不是x+y。 兩種類(lèi)型的類(lèi)型轉(zhuǎn)換: 系統(tǒng)自動(dòng)進(jìn)行的類(lèi)型轉(zhuǎn)換,把精度低的類(lèi)型提升成精度高的類(lèi)型,例如float自動(dòng)轉(zhuǎn)換成double類(lèi)型; 強(qiáng)制類(lèi)型轉(zhuǎn)換,以便達(dá)到特定的目的,例如x的值為float類(lèi)型,那么x%3不合法,可以把x強(qiáng)制轉(zhuǎn)換成int類(lèi)型,(int)x%3,自增、自減運(yùn)算符(右結(jié)合性),i+,+i,i-,-i 前綴,先增1或者減1再使用其值;后綴,先使用其值再增1或者減1。 假設(shè)n=3,執(zhí)行m=n+;結(jié)果如何?(m=3)m=+n;結(jié)果如何?(m=4) 自增、自減運(yùn)算符只能用于變量,常量、表達(dá)式都不能自增或自減。,m=-n+該怎么算?從附錄C可以查出,負(fù)號(hào)運(yùn)算符(-)和自增運(yùn)算符(+)的優(yōu)先級(jí)相同,但是m=(-n)+非法,只能是m=-(n+),相當(dāng)于m= -n;n=n+1; 另外,負(fù)號(hào)運(yùn)算符(-)和自增運(yùn)算符(+)都是右結(jié)合性,因此n應(yīng)該跟+結(jié)合。 不要出現(xiàn)太復(fù)雜晦澀難懂的表達(dá)式,例如a=i+j之類(lèi)的表達(dá)式,建議分寫(xiě)成幾個(gè)表達(dá)式,或者用括號(hào)括起更容易懂。,逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式,表達(dá)式1,表達(dá)式2,表達(dá)式n 先計(jì)算表達(dá)式1,再計(jì)算表達(dá)式2,最后表達(dá)式n為整個(gè)表達(dá)式的值,x=a=3,6*a 執(zhí)行結(jié)果x和a都等于3,整個(gè)逗號(hào)表達(dá)式結(jié)果是18 x=(a=3,6*a) a的值為3,x的值為18 a=3*5,a*4 整個(gè)表達(dá)式里,乘法運(yùn)算符優(yōu)先級(jí)最高,先算3*5,得到15;賦值運(yùn)算符優(yōu)先級(jí)又比逗號(hào)運(yùn)算符優(yōu)先級(jí)高,于是把15賦給

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論