ETemp第02章基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式.ppt
《ETemp第02章基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《ETemp第02章基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式.ppt(80頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
下一講,前一講課堂練習(xí),1.一個(gè)C程序的執(zhí)行是從__。A)本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束B(niǎo))本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束C)本程序的main函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束D)本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序main函數(shù)結(jié)束,2.源程序program.c經(jīng)編譯產(chǎn)生的目標(biāo)文件和連接后產(chǎn)生的可執(zhí)行文件是__。A)program.bak和program.objB)program.obj和progam.exeC)program.ext和program.cD)program.bak和program.exe,3.TurboC中完成一次編譯和連接的快捷方式是__。A)Alt+F9B)Ctrl+F9C)F9D)Alt+F5,A,B,C,,第2章:基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,學(xué)習(xí)的意義,學(xué)習(xí)C語(yǔ)言的目的是什么?目的可能是為了:期末考試等級(jí)考試研究生考試程序員考試……,最終目的是:用C語(yǔ)言編寫程序來(lái)解決實(shí)際問(wèn)題!,,程序是什么?,程序是解決某種問(wèn)題的一組指令的有序集合。著名計(jì)算機(jī)科學(xué)家沃思(NikiklausWirth)提出一個(gè)公式:程序=數(shù)據(jù)結(jié)構(gòu)+算法,學(xué)習(xí)的意義,程序是什么?,對(duì)數(shù)據(jù)的描述。在C語(yǔ)言中,體現(xiàn)為數(shù)據(jù)類型的描述!,對(duì)數(shù)據(jù)處理的描述。是為解決一個(gè)問(wèn)題而采取的方法和步驟,是程序的靈魂!,>,>,結(jié)論:學(xué)好C語(yǔ)言首先就必須十分了解C語(yǔ)言的數(shù)據(jù)類型、與算符與表達(dá)式。,掌握變量和常量的概念;理解各種類型的數(shù)據(jù)在內(nèi)存中的存放形式;掌握各種類型數(shù)據(jù)的常量的使用方法;掌握各種整型、字符型、浮點(diǎn)型變量的定義和引用方法;了解調(diào)用printf函數(shù)輸出各種類型數(shù)據(jù)的方法;掌握數(shù)據(jù)類型轉(zhuǎn)換的規(guī)則以及強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換的方法;掌握賦值運(yùn)算符、算術(shù)運(yùn)算符、位運(yùn)算符、逗號(hào)運(yùn)算符以及sizeof的使用方法;理解運(yùn)算符的優(yōu)先級(jí)和結(jié)合性的概念,記住所學(xué)的各種運(yùn)算符的優(yōu)先級(jí)關(guān)系和結(jié)合性。,學(xué)習(xí)目標(biāo),,2.1.1C語(yǔ)言數(shù)據(jù)類型,數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作,本章所介紹的數(shù)據(jù)類型,2.1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式,☆字符型數(shù)據(jù)是以ASCII碼值存儲(chǔ)在計(jì)算機(jī)中,占用1個(gè)字節(jié),例如字符‘A’存放形式:,例如字符‘E’存放形式:,A的ASCII碼值65,E的ASCII碼值69,☆整型數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)中,占用2個(gè)字節(jié),例如9存放形式:,最高位是符號(hào)位,其值0表示正數(shù),1表示負(fù)數(shù)。,例如-9存放形式:,2.1.2數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式,☆單精度實(shí)型數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)中,占用4個(gè)字節(jié),例如26.7510=(11010.11)2=(-1)025(0.1101011)226.75的存儲(chǔ)形式:,S,M,E,3130………………………………………………..87……………………0,其中S表示數(shù)值的正負(fù)號(hào),0表示正,1表示負(fù)。M表示規(guī)格化的數(shù)值,即首位小數(shù)不為0。M確定了數(shù)值的精度。E用移碼表示指數(shù)。浮點(diǎn)數(shù)的一般表達(dá)形式(-1)S2e規(guī)格化的尾數(shù)E=27+e-27<e≤27,-26.75的存儲(chǔ)形式:,2.2常量、變量和標(biāo)識(shí)符1.標(biāo)識(shí)符定義:用來(lái)標(biāo)識(shí)變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線C語(yǔ)言的關(guān)鍵字不能用作變量名大小寫敏感長(zhǎng)度:有效長(zhǎng)度為32個(gè)字符。隨系統(tǒng)而異,但至少前8個(gè)字符有效命名原則:變量名和函數(shù)名中的英文字母一般用小寫,以增加可讀性見(jiàn)名知意不宜混淆如l與I,o與0,在TC2.0及BC3.1中,變量名(標(biāo)識(shí)符)的有效長(zhǎng)度為1~32個(gè)字符,缺省值為32,但在VC中其長(zhǎng)度可達(dá)到255,例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123,M.D.John,3days,#33,char,$123,a>b,.字符非法,數(shù)字3不可作首字符,#字符非法,char是關(guān)鍵字,>字符非法,$不可作首字符,2.2常量、變量和標(biāo)識(shí)符2.常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))常量的分類:直接常量(值常量或稱為字面產(chǎn)量)整型常量:10、15、-10、-30實(shí)型常量:12.5、30.0、-1.5字符常量:‘A’、‘b’、‘c’字符串常量:“sum”、“A”、“123”符號(hào)常量用標(biāo)識(shí)符來(lái)代表常量。其定義格式為:,#define符號(hào)常量常量,#defineNUM20#definePI3.1415926,#include#definePRICE30voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);},運(yùn)行結(jié)果:total=300,2.2常量、變量和標(biāo)識(shí)符3.變量定義:程序運(yùn)行時(shí)其值可以被改變的量變量的兩要素:變量名、變量值變量的定義格式:變量的初始化:定義時(shí)賦初始值變量的使用:先定義,后賦值變量定義位置:一般放在函數(shù)開(kāi)頭,[存儲(chǔ)類型]數(shù)據(jù)類型變量名1[,變量名2,…,變量名n];,intx,y,z;floatradius,length,area;charch;,決定分配字節(jié)數(shù)和數(shù)的表示范圍,合法標(biāo)識(shí)符,例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;,例1:intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain,例2:floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain,2.3簡(jiǎn)單數(shù)據(jù)類型與表示范圍,1.整型數(shù)據(jù),整型常量,十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.如:123,-456,0八進(jìn)制整數(shù):由數(shù)字0開(kāi)頭,后跟數(shù)字0~7表示.如:0123,011十六進(jìn)制整數(shù):由0 x或0X開(kāi)頭,后跟0~9,a~f,A~F表示.如0 x123,0Xff,定義整數(shù)的符號(hào)常量#defineNUM120//十進(jìn)制數(shù)20#defineNUM2020//八進(jìn)制數(shù)(十進(jìn)制16)#defineNUM30 x2a//十六進(jìn)制數(shù)(十進(jìn)制42),思考題:下列整型常量哪些是非法的?012,oX7A,00,078,0 x5Ac,-0 xFFFF,0034,7B。,首字符不能是字母o,八進(jìn)制數(shù)中不能有數(shù)字8,十進(jìn)制數(shù)中不能有字母B,2.整數(shù)在內(nèi)存中的表示,整數(shù)的數(shù)值在內(nèi)存中用補(bǔ)碼的形式存放。求一個(gè)整數(shù)補(bǔ)碼的方法:(假設(shè)用n個(gè)二進(jìn)制位的內(nèi)存單元來(lái)存儲(chǔ)它),如果是正整數(shù),采用符號(hào)-絕對(duì)值表示,即最高有效位(符號(hào)位)為0表示正,數(shù)的其余部分則表示數(shù)的絕對(duì)值;如果是負(fù)整數(shù),則先寫出與該負(fù)數(shù)相對(duì)應(yīng)的正數(shù)的補(bǔ)碼表示,然后將其按位求反,最后在末位(最低位)加1;然后將上述求得的補(bǔ)碼的低n位存放于內(nèi)存單元之中,就得到了該整數(shù)在內(nèi)存中的表示,內(nèi)存單元的最高位是符號(hào)位(0表示正,1表示負(fù))。,在TC2.0或BC3.1下,一個(gè)整數(shù)默認(rèn)情況下需要2個(gè)字節(jié)(16位)的內(nèi)存單元存放;而在VC6.0下,則需要4個(gè)字節(jié)(32位)。,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),+13:對(duì)于16位的內(nèi)存單元:,,符號(hào)位,十進(jìn)制數(shù)+13兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+13)補(bǔ)=0000000000001101,,,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),+13:對(duì)于32位的內(nèi)存單元:,,十進(jìn)制數(shù)+13四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+13)補(bǔ)=00000000000000000000000000001101,,符號(hào)位,,記住:數(shù)據(jù)在內(nèi)存中的存放位置是高位數(shù)字放在高地址的存儲(chǔ)單元中,低位數(shù)字放在低地址的存儲(chǔ)單元中。,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),-13:對(duì)于16位的內(nèi)存單元:,,符號(hào)位,十進(jìn)制數(shù)-13兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+13)補(bǔ)=0000000000001101,,,(-13)補(bǔ)=1111111111110011,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),-13:對(duì)于32位的內(nèi)存單元:,,十進(jìn)制數(shù)-13四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+13)補(bǔ)=00000000000000000000000000001101,,符號(hào)位,,(-13)補(bǔ)=11111111111111111111111111110011,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),-65537:對(duì)于16位的內(nèi)存單元:,(+65537)補(bǔ)=010000000000000001,,(-65537)補(bǔ)=101111111111111111,,十進(jìn)制數(shù)-65537兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,符號(hào)位,真值為:-1,不是-65537!,2.整數(shù)在內(nèi)存中的表示,十進(jìn)制整數(shù),-65537:對(duì)于32位的內(nèi)存單元:,,十進(jìn)制數(shù)-65537四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+65537)補(bǔ)=00000000000000010000000000000001,,符號(hào)位,表示負(fù),,(-65537)補(bǔ)=11111111111111101111111111111111,真值為:-65537!,為什么-65537這個(gè)數(shù)在16位內(nèi)存單元中的表示與在32位內(nèi)存單元中的表示不相同呢?,這主要是因?yàn)?65537這個(gè)數(shù)超出了16位內(nèi)存單元表示數(shù)的范圍,所以實(shí)際存儲(chǔ)的值(-1)與要表示的值(-65537)不同,但-65537并沒(méi)有超出了32位內(nèi)存單元表示數(shù)的范圍,所以實(shí)際存儲(chǔ)的值就是其本身。因此,我們?cè)贑語(yǔ)言中對(duì)數(shù)據(jù)處理時(shí)必須要注意數(shù)據(jù)的表示范圍,以免引起不必要的錯(cuò)誤。,2.整數(shù)在內(nèi)存中的表示,八進(jìn)制整數(shù),034:對(duì)于16位的內(nèi)存單元:034=(011100)2,,符號(hào)位,八進(jìn)制數(shù)034兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(034)補(bǔ)=0000000000011100,,,對(duì)于32位的內(nèi)存單元:(034)補(bǔ)=00000000000000000000000000011100,,,八進(jìn)制數(shù)034四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,符號(hào)位,,2.整數(shù)在內(nèi)存中的表示,八進(jìn)制整數(shù),-034:對(duì)于16位的內(nèi)存單元:,,符號(hào)位,八進(jìn)制數(shù)-034兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(+034)補(bǔ)=0000000000011100,,,(-034)補(bǔ)=1111111111100100,對(duì)于32位的內(nèi)存單元:(+034)補(bǔ)=00000000000000000000000000011100,(-034)補(bǔ)=11111111111111111111111111100100,,,,八進(jìn)制數(shù)-034四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,符號(hào)位,2.整數(shù)在內(nèi)存中的表示,十六進(jìn)制整數(shù),0X8AB6:對(duì)于16位的內(nèi)存單元:0X8AB6=(1000101010110110)2,,符號(hào)位表示負(fù),十六進(jìn)制數(shù)0X8AB6兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,(0X8AB6)補(bǔ)=01000101010110110,,真值為:-30026!,對(duì)于32位的內(nèi)存單元:(0X8AB6)補(bǔ)=00000000000000001000101010110110,,,十六進(jìn)制數(shù)0X8AB6四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,,符號(hào)位,真值為:+35510!,溢出!,,2.整數(shù)在內(nèi)存中的表示,十六進(jìn)制整數(shù),-0X8AB6:對(duì)于16位的內(nèi)存單元:,(+0X8AB6)補(bǔ)=01000101010110110,,(-0X8AB6)補(bǔ)=10111010101001010,,十六進(jìn)制數(shù)-0X8AB6兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,符號(hào)位表示正,真值為:+30026!,對(duì)于32位的內(nèi)存單元:(+0X8AB6)補(bǔ)=00000000000000001000101010110110,(-0X8AB6)補(bǔ)=11111111111111110111010101001010,,,十六進(jìn)制數(shù)-0X8AB6四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式,,符號(hào)位表示負(fù),真值為:-35510!,3.整型變量,整型變量的定義,int變量名[,變量名2,……,變量名n];,int必須小寫,至少一個(gè)空格,必須為合法的標(biāo)識(shí)符,以逗號(hào),分隔,以分號(hào);結(jié)尾,定義時(shí)可以賦初值,方法:在變量名后面增加“=數(shù)值”,例:inta;intx,y,z;intm=2,y=-3;,當(dāng)程序中定義了一個(gè)變量時(shí),計(jì)算機(jī)會(huì)為這個(gè)變量分配一個(gè)相應(yīng)大小的內(nèi)存單元。因此,這個(gè)變量是有值的,它的值就是對(duì)應(yīng)內(nèi)存單元的值。如果定義時(shí)沒(méi)有賦初值,則這個(gè)值程序員是無(wú)法預(yù)知的。,整型變量的分類,修飾符控制變量是否有符號(hào):signed(有符號(hào))和unsigned(無(wú)符號(hào))控制整型變量的值域范圍:short(短)和long(長(zhǎng))。,有符號(hào)基本型(int)inta=-2;//定義一個(gè)有符號(hào)整型變量a,并賦初值-2占一個(gè)機(jī)器字大小的內(nèi)存單元。TC或BC3.1下,變量占2個(gè)字節(jié)(16位)的內(nèi)存單元;VC6.0下,變量占4個(gè)字節(jié)(32位)的內(nèi)存單元。,如果定義變量時(shí),不指定signed,也不指定unsigned,則默認(rèn)為signed(有符號(hào)),,符號(hào)位,變量a占用的內(nèi)存單元(2字節(jié)),有符號(hào)整型變量在內(nèi)存中的實(shí)際存放形式(假設(shè)在BC3.1下),無(wú)符號(hào)基本型(unsignedint或unsigned),unsignedinta=2;//定義一個(gè)無(wú)符號(hào)整型變量a,并賦初值2或unsigneda=2;占用的內(nèi)存單元字節(jié)數(shù)同int類型。與inta=2;等價(jià)。,unsignedinta=-2;//定義一個(gè)無(wú)符號(hào)整型變量a,并賦初值-2或unsigneda=-2;,無(wú)符號(hào)整型變量在內(nèi)存中的實(shí)際存放形式(假設(shè)在BC3.1下),,數(shù)據(jù)位,變量a占用的內(nèi)存單元(2字節(jié)),,其值為:65534!,注意:對(duì)于有符號(hào)數(shù)也好還是無(wú)符號(hào)數(shù)也好,其實(shí)在計(jì)算機(jī)內(nèi)存中表示是不加區(qū)分的,都是以其補(bǔ)碼形式表示,只是我們?cè)鯓涌创罡叨M(jìn)制位的問(wèn)題,如果把最高位當(dāng)成符號(hào)位看待,則為有符號(hào)數(shù),如果把最高位當(dāng)成數(shù)據(jù)位看待,則變?yōu)闊o(wú)符號(hào)數(shù)。例如:unsignedinta=-2;printf(“%d”,a);------有符號(hào)輸出,則為-2printf(“%u”,a);------無(wú)符號(hào)輸出,則為65534,有符號(hào)短整型(shortint或short),shortinta=2;//定義一個(gè)有符號(hào)短整型變量a,并賦初值2或shorta=2;占用的內(nèi)存單元為2個(gè)字節(jié),無(wú)論是TC、BC,還是VC。,無(wú)符號(hào)短整型(unsignedshortint或unsignedshort),unsignedshortinta=2;//定義一個(gè)無(wú)符號(hào)短整型變量a,并賦初值2或unsignedshorta=2;占用的內(nèi)存單元字節(jié)數(shù)同short類型。,在TC2.0和BC3.1下,unsignedshort類型與unsignedint類型是等價(jià)的。,有符號(hào)長(zhǎng)整型(longint或long),longinta=234567;//定義一個(gè)有符號(hào)長(zhǎng)整型變量a,并賦初值234567或longa=234567;占用的內(nèi)存單元為4個(gè)字節(jié),無(wú)論是TC、BC,還是VC。,無(wú)符號(hào)長(zhǎng)整型(unsignedlongint或unsignedlong),unsignedlonginta=2;//定義一個(gè)無(wú)符號(hào)長(zhǎng)整型變量a,并賦初值2或unsignedlonga=2;占用的內(nèi)存單元字節(jié)數(shù)同long類型。,在VC中l(wèi)ong與int類型基本相同,均占四個(gè)字節(jié)的內(nèi)存單元;但在TC或BC中,long類型與int類型只是所占字節(jié)不同外(long占4字節(jié),int占2字節(jié)),其它數(shù)據(jù)處理方法是一樣的。,【例】各種整型變量的定義,#include#defineSUM65535voidmain(){inta,b=20;unsignedintc=0 xff;longD;a=SUM;D=301;printf("a=%d\n",a);printf("b=%d\n",b);printf("c=%d\n",c);printf(“D=%d\n”,D);},//文件包含,頭文件說(shuō)明,//定義符號(hào)常量SUM,值為65535,//定義兩個(gè)int型變量a和b,b賦初值20,//定義無(wú)符號(hào)整型變量c,并賦初值0 xff,//定義長(zhǎng)整型變量D,//對(duì)a賦值為SUM,這時(shí)a的值是65535,//對(duì)D賦值為301,//以有符號(hào)十進(jìn)制形式("%d")顯示a的值,//以有符號(hào)十進(jìn)制形式(“%d”)顯示b的值,//以有符號(hào)十進(jìn)制形式("%d")顯示c的值,//以有符號(hào)十進(jìn)制形式("%d")顯示D的值,,變量定義部分,,語(yǔ)句執(zhí)行部分,在TC2下運(yùn)行結(jié)果:a=-1b=20c=255D=301,在VC6.0下運(yùn)行結(jié)果:a=65535b=20c=255D=301,對(duì)于16位的有符號(hào)整型變量a來(lái)說(shuō),因65535在內(nèi)存中的形式為1111111111111111,最高位為1表示負(fù),則其所對(duì)應(yīng)的十進(jìn)制數(shù)就為-1。,如果unsignedb=SUM;printf(“b=%u”,b);結(jié)果會(huì)是?,4.整數(shù)常量的分類,根據(jù)其值所在范圍確定其數(shù)據(jù)類型。在TC2.0或BC3.1下,如果整型常量的值位于-32768~32767之間,C語(yǔ)言認(rèn)為它是int型常量;如果整型常量的值位于-2147483648~2147483647之間,C語(yǔ)言認(rèn)為它是long型常量。整型常量后加字母l或L,認(rèn)為它是longint型常量。比如123L、45l、0XAFL。無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為U或u。例如:358u,0 x38Au,235Lu均為無(wú)符號(hào)數(shù)。,前綴、后綴可同時(shí)使用以表示各種類型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整數(shù)A5,其十進(jìn)制為165。其實(shí)整型常數(shù)這種表示無(wú)符號(hào)數(shù)意義不大,在機(jī)器內(nèi)部它還是用其補(bǔ)碼表示,例如-1U和-1在內(nèi)存中表示是一樣的,數(shù)據(jù)處理也一樣,所以有的教科書(shū)上說(shuō)“常量無(wú)unsigned類型”,其實(shí)有,但無(wú)意義。,5.實(shí)型數(shù)據(jù),實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù)),十進(jìn)制小數(shù)形式:由數(shù)字0~9和小數(shù)點(diǎn)組成.如:0.0,5.6,-5.指數(shù)形式:由十進(jìn)制數(shù),加階碼標(biāo)志e或E以及階碼(只能為整數(shù),可以帶符號(hào))組成.其一般形式為:aEn其中:a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù),都不可缺少。其可表示為a10n,合法的實(shí)數(shù)表示:2.1E5表示2.1105,3.7E-2表示3.710-2。,非法的實(shí)數(shù)表示:345(無(wú)小數(shù)點(diǎn)),E7(階碼標(biāo)志E之前無(wú)數(shù)字),-5E(無(wú)階碼),50.-E3(負(fù)號(hào)位置不對(duì)),實(shí)型變量,單精度實(shí)型(float)floatf=3.14,g;這種定義的變量在內(nèi)存中占4個(gè)字節(jié)(32位)的存儲(chǔ)單元。雙精度實(shí)型(double)doublex,y;這種定義的變量在內(nèi)存中占8個(gè)字節(jié)(64位)的存儲(chǔ)單元。長(zhǎng)雙精度實(shí)型(longdouble)longdoublex,y;在TC或BC下,這種定義的變量在內(nèi)存中占10個(gè)字節(jié)(80位)的存儲(chǔ)單元;在VC下則占8個(gè)字節(jié)(64位)。,注意:三種實(shí)數(shù)類型中,其精度是float*/%----->+-(2)(3)(4)說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù),例:5/2結(jié)果-5/2.0結(jié)果,例:5%2結(jié)果-5%2結(jié)果1%10結(jié)果5%1結(jié)果5.5%2,3.算術(shù)運(yùn)算符、算術(shù)表達(dá)式,2,-2.5,1,-1,1,0,(?),余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同,其值的絕對(duì)值等于兩數(shù)絕對(duì)值相除所得的余數(shù)。,表達(dá)式和算術(shù)表達(dá)式,3.算術(shù)運(yùn)算符、算術(shù)表達(dá)式,表達(dá)式:用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子。算術(shù)表達(dá)式:表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符的表達(dá)式。,運(yùn)算符優(yōu)先級(jí)(到目前為止),例:3+5*8、(x+y)/2-1等,,高,低,自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i=i+1或i=i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i=i+1或i=i-1),例:j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;,//k=4,j=4,//k=3,j=4,//4,//3,//c=20,a=4,//c=15,a=4,4.自增自減運(yùn)算符、符號(hào)運(yùn)算符,負(fù)號(hào)運(yùn)算符(“-”)減號(hào)(-)既是一個(gè)算術(shù)運(yùn)算符,又是一個(gè)負(fù)號(hào)運(yùn)算符。負(fù)號(hào)運(yùn)算符是單目運(yùn)算符。例如:a=2,那么-a的值就是-2。負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)比較高,與強(qiáng)制類型轉(zhuǎn)換符是同一個(gè)級(jí)別。,自增、自減運(yùn)算符注意事項(xiàng)++和--運(yùn)算符只能用于變量,不能用于常量和表達(dá)式。因?yàn)?+和--蘊(yùn)含著賦值操作。例如:5++、--(a+b)都是非法的表達(dá)式。負(fù)號(hào)運(yùn)算符、++、--和強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的優(yōu)先級(jí)相同,當(dāng)這些運(yùn)算符連用時(shí),按照從右向左的順序計(jì)算,即具有右結(jié)合性。兩個(gè)+和-之間不能有空格。在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。例如:++i++是非法的。自增、自減運(yùn)算,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。,4.自增自減運(yùn)算符、符號(hào)運(yùn)算符,例:intp,i=2,j=3;p=-i++;p=?i=?p=i+++j;p=?i=?j=?p=i+--j;p=?i=?j=?p=i+++--j;p=?i=?j=?p=i+++i++;p=?i=?p=++i+(++i);p=?i=?p=++i+i++;p=?i=?,-2,3,5,3,3,4,2,2,4,3,2,4,4,4,8,4,6,5.算術(shù)運(yùn)算符中數(shù)據(jù)類型轉(zhuǎn)換規(guī)則,#includevoidmain(){floata,b,c;a=7/2;//計(jì)算7/2得int型值3,因此a的值為3.0b=7/2*1.0;//計(jì)算7/2得int型值3,再與1.0相乘,因此b的值為3.0c=1.0*7/2;//先計(jì)算1.0*7得double型的結(jié)果7.0,然后再計(jì)算7.0/2,因此c的值是3.5printf("a=%f,b=%f,c=%f",a,b,c);},a=3.000000,b=3.000000,c=3.500000,6.關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符,1.關(guān)系運(yùn)算符和關(guān)系表達(dá)式,關(guān)系運(yùn)算符,關(guān)系表達(dá)式,用關(guān)系運(yùn)算符連接起來(lái)的式子稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的一般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式,例:a+b>c–dx>3/2a+1a+b等價(jià)于:a>b!=c等價(jià)于:a==bc等價(jià)于:a>>2b|c等價(jià)于:,c>(a+b),(a>b)!=c,a==(bc),(a>>2)b))|c,已知:a=1;b=2;c=3;問(wèn):d=a!=c==ab)==cb+cbf=a>b>c,//表達(dá)式值1,//表達(dá)式值1,//表達(dá)式值0,//d=1,//f=0,關(guān)系運(yùn)算注意:,例若a=0;b=0.5;x=0.3;則a<=x2>7>8在C中是允許的,值為,0,例inti=1,j=7,a;a=i+(j%4!=0);則a=,2,例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為,1,0,例應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)y等價(jià)于:a==b||x==y等價(jià)于:!a||a>b等價(jià)于:!a>b等價(jià)于:c=a||b等價(jià)于:a|7b=5;!aa,例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a(chǎn)’x≠0,表達(dá)式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x)六種。,左移(<<)實(shí)現(xiàn)將某變量所對(duì)應(yīng)的二進(jìn)制數(shù)往左移位,溢出的最高位被丟掉,空出的低位用零填補(bǔ)。其一般格式為:,返回整型值的表達(dá)式<<返回整型值的表達(dá)式,例:inta=3;a<<2:將a所對(duì)應(yīng)的二進(jìn)制數(shù)左移兩位,該表達(dá)式的值為12。2<>)右移運(yùn)算實(shí)現(xiàn)將某變量所對(duì)應(yīng)的二進(jìn)制數(shù)往右移位,溢出的最低位被丟掉,如果變量是無(wú)符號(hào)數(shù),空出的高位用零填補(bǔ),如果變量是有符號(hào)數(shù),空出的高位用原來(lái)的符號(hào)位填補(bǔ)(即負(fù)數(shù)填1,正數(shù)填0)。其一般格式為:,返回整型值的表達(dá)式>>返回整型值的表達(dá)式,例:inta=8;a>>2:將a所對(duì)應(yīng)的二進(jìn)制數(shù)右移兩位,該表達(dá)式的值為2。,例:將short類型數(shù)據(jù)的高、低位字節(jié)互換#includevoidmain(){shorta=0 xf245,b,c;b=a>8;//將a的高8位移到低8位賦值給c,c的值為0 xfff2c=c},a=0 x45f2,7.位運(yùn)算符、位運(yùn)算表達(dá)式,按位或(|)如果兩個(gè)數(shù)對(duì)應(yīng)的位全為0,對(duì)應(yīng)的結(jié)果位值為0,否則,對(duì)應(yīng)的結(jié)果位值為1。,按位與(a|b的值等于9。c|d的值等于15,例:inta=8,b=9,c=12,d=3;a~a的值等于-9。~d的值等于-10,7.位運(yùn)算符、位運(yùn)算表達(dá)式,位運(yùn)算之間的優(yōu)先級(jí)~→>→a^b的值等于1,,高,低,8.逗號(hào)運(yùn)算符、逗號(hào)表達(dá)式,位運(yùn)算符:,逗號(hào)表達(dá)式:用逗號(hào)連接起來(lái)的表達(dá)式。其一般形式為:,表達(dá)式1,表達(dá)式2,……,表達(dá)式k,優(yōu)先級(jí):優(yōu)先級(jí)最低。結(jié)合性:左結(jié)合性。即逗號(hào)表達(dá)式的求值順序是從左向右依此計(jì)算用逗號(hào)分隔的各表達(dá)式的值。逗號(hào)表達(dá)式的值:最后一個(gè)表達(dá)式的值就是整個(gè)逗號(hào)表達(dá)式的值。用途:常用于循環(huán)for語(yǔ)句中。,例如:a+3,b=4,b++,例:a=3*5,a*4a=3*5,a*4,a+5例:x=(a=3,6*3)x=a=3,6*a例:a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,//a=15,表達(dá)式值60,//a=15,表達(dá)式值20,//賦值表達(dá)式,表達(dá)式值18,x=18,//逗號(hào)表達(dá)式,表達(dá)式值18,x=3,//1,2,3,//3,2,3,例:#includevoidmain(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);},運(yùn)行結(jié)果:x=3,,9.sizeof運(yùn)算符、復(fù)合運(yùn)算符,sizeof運(yùn)算符功能:獲取變量和數(shù)據(jù)類型所占內(nèi)存大?。ㄗ止?jié)數(shù))格式:,sizeof表達(dá)式sizeof(數(shù)據(jù)類型名或表達(dá)式),例:sizeof(int)其值為2(在TC2.0或BC3.1下)其值為4(在VC6.0下)sizeof(long)其值是4sizeof10L其值也是4unsignedlonga=2;sizeof(a)其值也是4,復(fù)合賦值運(yùn)算符,種類:+=-=*=/=%=>=a+=a-=a*a;,//a=-264等價(jià)于a=a+(a=a-(a*a)),例:inta=2;a%=4-1;a+=a*=a-=a*=3;,//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3))),2.5運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,,,判斷表達(dá)式0XF0F0floatf;f=x/y;printf(“f=%f\n”,f);}則程序的輸出結(jié)果是?,f=1.000000,9.設(shè)整型變量x,y,z均為2,表達(dá)式(x++)+(y++)+(z++)的值是__。A)6B)7C)8D)910.設(shè)inta=3,b=5;floatx=7.5,y=3.5;則表達(dá)式(float)a+b/2+(int)x%(int)y;的值是__。11.執(zhí)行語(yǔ)句:inta;a=‘1’+1.5;后,正確的敘述是__。A)a的值是字符‘3’B)a的值是浮點(diǎn)型C)不允許字符型和浮點(diǎn)型相加D)a的值是字符’1’的ASCII碼值加上1,A,6.0,D,12.設(shè)int類型的數(shù)據(jù)長(zhǎng)度為2個(gè)字節(jié),則unsignedint類型數(shù)據(jù)的取值范圍是__。A)均為2個(gè)字節(jié)B)0~65535C)-32768~32767D)-256至25513.執(zhí)行下列語(yǔ)句后,運(yùn)行結(jié)果為_(kāi)_。main(){inti=3,j;j=++i+i++;printf(“%d\n”,j);}A)6B)7C)8D)9,B,C,14.main(){intx=4,y;floatk=4,z;clrscr();printf("%d\n",--x*--x*--x);x=4;y=--x*--x*--x;printf("y=%d\n",y);z=--k*--k*--k;printf("z=%f\n",z);},++x*++x:x為浮點(diǎn)型:從左向右計(jì)算。x為整型:在輸出函數(shù)中,從左向右計(jì)算;在輸出函數(shù)外,先連續(xù)減兩次,然后乘積。,輸出結(jié)果:6Y=1Z=6.000000,15.若a為int類型,且其值為5,則執(zhí)行表達(dá)式a+=a-=a*a后,a的值為_(kāi)_。A)-5B)-40C)-15D)不確定16.如果x,y,i和j都是int型變量,則表達(dá)式x=(i=1,j=6,y=8)的值為_(kāi)_。,B,8,main(){intx=0,z,y=z=-1;x=x---z-y;printf("x=%d\n",x);}輸出結(jié)果是:,17.以下各程序的輸出結(jié)果是:,main(){intx=0,z,y=z=-1;x+=z---y;printf("x=%d\n",x);}輸出結(jié)果是:,main(){intx=0,z,y=z=-1;x=--x-z-y;printf("x=%d\n",x);}輸出結(jié)果是:,main(){intx=0,z,y=z=-1;/*x*=-y-z---x;*/x=-y-z---x;/*x+=-y-z---x;*/printf("x=%d\n",x);}輸出結(jié)果是:,main(){intx=0,z,y=z=-1;x=-y-z+--x;printf("x=%d\n",x);}輸出結(jié)果是:,main(){intx=0,z,y=z=-1;x+=--x-z-y;printf("x=%d\n",x);}輸出結(jié)果是:,x=1,x=1,x=1,x=0,x=0,x=2,x=0,x=2,19.若a=3,b=3,c=5;則⑴c+b++*a*++b的值是⑵a++*a+b+c*a*++b的值是⑶a*a+++b*++a的值是⑷printf(“%d,%d\n”,a,a++)的輸出結(jié)果是⑸printf(“%d,%d\n”,a,++a)的輸出結(jié)果是⑹printf(“%d,%d\n”,++a,a)的輸出結(jié)果是⑺printf(“%d,%d\n”,a++,a)的輸出結(jié)果是,18.main{intx=3,y=0;y=++x*--x;/*x=++x*x--;*/printf(“y=%d,x=%d\n”,y,x);}輸出結(jié)果是:,y=9,x=3,53,28,73,4,3,4,4,4,3,3,3,y=0,x=15,x=++x*x--等價(jià)于:x=++x;x=x*x;x--;,main(){intx=3;x+=--x+x++;printf(“x=%i\n”,x);},x=7,main(){inta=9;a+=a-=a+a;printf(“%d\n”,a);}此程序執(zhí)行后的結(jié)果是:?,main(){inta=5;a*=a/=a++;printf(“%d\n”,a);}此程序執(zhí)行后的結(jié)果是:?,-18,2,main(){intx=4,y;floatk=4,z;clrscr();printf("%d\n",--x*--x*--x);x=4;y=++x*--x*--x;printf("y=%d\n",y);z=++k+--k*--k;printf("z=%f,k=%f\n",z,k);},輸出結(jié)果:6y=27z=9.000000,k=3.000000,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- ETemp 02 基本 數(shù)據(jù)類型 運(yùn)算 表達(dá)式
鏈接地址:http://kudomayuko.com/p-11495689.html