之一(基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式).ppt
《之一(基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式).ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《之一(基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式).ppt(80頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
下一講,第2章:基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式,學(xué)習(xí)的意義,學(xué)習(xí)C語(yǔ)言的目的是什么?目的可能是為了:期末考試等級(jí)考試研究生考試程序員考試,最終目的是:用C語(yǔ)言編寫(xiě)程序來(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ù)類(lèi)型的描述!,對(duì)數(shù)據(jù)處理的描述。是為解決一個(gè)問(wèn)題而采取的方法和步驟,是程序的靈魂!,結(jié)論:學(xué)好C語(yǔ)言首先就必須十分了解C語(yǔ)言的數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式。,掌握變量和常量的概念;理解各種類(lèi)型的數(shù)據(jù)在內(nèi)存中的存放形式;掌握各種類(lèi)型數(shù)據(jù)的常量的使用方法;掌握各種整型、字符型、浮點(diǎn)型變量的定義和引用方法;了解調(diào)用printf函數(shù)輸出各種類(lèi)型數(shù)據(jù)的方法;掌握數(shù)據(jù)類(lèi)型轉(zhuǎn)換的規(guī)則以及強(qiáng)制數(shù)據(jù)類(lèi)型轉(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ù)類(lèi)型,數(shù)據(jù)類(lèi)型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.可對(duì)它進(jìn)行的操作,本章所介紹的數(shù)據(jù)類(lèi)型,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.870,其中S表示數(shù)值的正負(fù)號(hào),0表示正,1表示負(fù)。M表示規(guī)格化的數(shù)值,即小數(shù)的首位為1。M確定了數(shù)值的精度。E用移碼表示指數(shù)。浮點(diǎn)數(shù)的一般表達(dá)形式(-1)S2e規(guī)格化的尾數(shù)E=27+e-27e27,-26.75的存儲(chǔ)形式:,2.2常量、變量和標(biāo)識(shí)符1.標(biāo)識(shí)符定義:用來(lái)標(biāo)識(shí)變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線(xiàn)組成,且第一個(gè)字母必須是字母或下劃線(xiàn)C語(yǔ)言的關(guān)鍵字不能用作變量名大小寫(xiě)敏感長(zhǎng)度:有效長(zhǎng)度為32個(gè)字符。隨系統(tǒng)而異,但至少前8個(gè)字符有效命名原則:變量名和函數(shù)名中的英文字母一般用小寫(xiě),以增加可讀性見(jiàn)名知意不宜混淆如l與I,o與0,在TC2.0及BC3.1中,變量名(標(biāo)識(shí)符)的有效長(zhǎng)度為個(gè)字符,缺省值為,但在VC中其長(zhǎng)度可達(dá)到255,例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123,M.D.John,3days,#33,char,$123,ab,.字符非法,數(shù)字3不可作首字符,#字符非法,char是關(guān)鍵字,字符非法,$不可作首字符,2.2常量、變量和標(biāo)識(shí)符2.常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))常量的分類(lèi):直接常量(值常量或稱(chēng)為字面產(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)常量標(biāo)識(shí)符常量,#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í)其值可以被改變的量變量的三要素:類(lèi)型、名稱(chēng)、值變量的定義格式:變量的初始化:定義時(shí)賦初始值變量的使用:先定義,后賦值變量定義位置:一般放在函數(shù)開(kāi)頭,存儲(chǔ)類(lèi)型數(shù)據(jù)類(lèi)型變量名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;/Undefinedsymbolstadentinfunctionmain,例2:floata,b,c;c=a%b;/Illegaluseoffloatingpointinfunctionmain,2.3簡(jiǎn)單數(shù)據(jù)類(lèi)型與表示范圍,1.整型數(shù)據(jù),整型常量,十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號(hào)表示.如:123,-456,0八進(jìn)制整數(shù):由數(shù)字0開(kāi)頭,后跟數(shù)字07表示.如:0123,011十六進(jìn)制整數(shù):由0 x或0X開(kāi)頭,后跟09,af,AF表示.如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ù),則先寫(xiě)出與該負(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)不同,但-32767并沒(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必須小寫(xiě),至少一個(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ù)知的。,整型變量的分類(lèi),修飾符控制變量是否有符號(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類(lèi)型。與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類(lèi)型。,在TC2.0和BC3.1下,unsignedshort類(lèi)型與unsignedint類(lèi)型是等價(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類(lèi)型。,在VC中l(wèi)ong與int類(lèi)型基本相同,均占四個(gè)字節(jié)的內(nèi)存單元;但在TC或BC中,long類(lèi)型與int類(lèi)型只是所占字節(jié)不同外(long占4字節(jié),int占2字節(jié)),其它數(shù)據(jù)處理方法是一樣的。,【例】各種整型變量的定義,#include#defineSUM65535voidmain()inta,b=20;unsignedintc=0 xff;longD;a=SUM;D=301;printf(a=%dn,a);printf(b=%dn,b);printf(c=%dn,c);printf(“D=%dn”,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。,如果usignedb=SUM;printf(“b=%u”,b);結(jié)果會(huì)是?,4.整數(shù)常量的分類(lèi),根據(jù)其值所在范圍確定其數(shù)據(jù)類(lèi)型。在TC2.0或BC3.1下,如果整型常量的值位于-3276832767之間,C語(yǔ)言認(rèn)為它是int型常量;如果整型常量的值位于-21474836482147483647之間,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í)使用以表示各種類(lèi)型的數(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類(lèi)型”,其實(shí)有,但無(wú)意義。,5.實(shí)型數(shù)據(jù),實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù)),十進(jìn)制小數(shù)形式:由數(shù)字09和小數(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ù)類(lèi)型中,其精度是float*/%-+-(2)(3)(4)說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性?xún)烧麛?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)相同,余數(shù)的絕對(duì)值等于兩數(shù)絕對(duì)值相除所得的余數(shù)。,表達(dá)式和算術(shù)表達(dá)式,3.算術(shù)運(yùn)算符、算術(shù)表達(dá)式,表達(dá)式:用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合語(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種類(lèi):前置+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)制類(lèi)型轉(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)制類(lèi)型轉(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)控制變變量加(或減)-,以及指針變量中,使指針指向下(或上)一個(gè)地址。,4.自增自減運(yùn)算符、符號(hào)運(yùn)算符,例:在TurboC環(huán)境下如果有以下的語(yǔ)句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ù)類(lèi)型轉(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,Start,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)的式子稱(chēng)為關(guān)系表達(dá)式。關(guān)系表達(dá)式的一般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式,例:a+bcdx3/2a+1a+b等價(jià)于:ab!=c等價(jià)于:a=bc等價(jià)于:a2b|c等價(jià)于:,c(a+b),(ab)!=c,a=(bc),(a2)b)|c,已知:a=1;b=2;c=3;問(wèn):d=a!=c=abc;的值?,答:d的值為1。等價(jià)于:d=(a!=c)=(ab)=cb+cbf=abc,/表達(dá)式值1,/表達(dá)式值1,/表達(dá)式值0,/d=1,/f=0,關(guān)系運(yùn)算注意:,例若a=0;b=0.5;x=0.3;則a78在C中是允許的,值為,0,例inti=1,j=7,a;a=i+(j%4!=0);則a=,2,例a0結(jié)果為A100結(jié)果為,1,0,例應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如1.0/3.0*3.0=1.0結(jié)果為可改寫(xiě)為:fabs(1.0/3.0*3.0-1.0)y等價(jià)于:a=b|x=y等價(jià)于:!a|ab等價(jià)于:!ab等價(jià)于:c=a|b等價(jià)于:a|7b=5;!aa,例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=ax0,表達(dá)式值為axy?1:1.5/xy,值為1.0;x)六種。,左移()實(shí)現(xiàn)將某變量所對(duì)應(yīng)的二進(jìn)制數(shù)往左移位,溢出的最高位被丟掉,空出的低位用零填補(bǔ)。其一般格式為:,返回整型值的表達(dá)式返回整型值的表達(dá)式,例:inta=3;a2:將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;a2:將a所對(duì)應(yīng)的二進(jìn)制數(shù)右移兩位,該表達(dá)式的值為2。,例:將short類(lèi)型數(shù)據(jù)的高、低位字節(jié)互換#includevoidmain()shorta=0 xf245,b,c;b=a8;/將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;aa的值等于-9。d的值等于-10,7.位運(yùn)算符、位運(yùn)算表達(dá)式,位運(yùn)算之間的優(yōu)先級(jí)ab的值等于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=%dn,x);,運(yùn)行結(jié)果:x=3,9.sizeof運(yùn)算符、復(fù)合運(yùn)算符,sizeof運(yùn)算符功能:獲取變量和數(shù)據(jù)類(lèi)型所占內(nèi)存大小(字節(jié)數(shù))格式:,sizeof表達(dá)式sizeof(數(shù)據(jù)類(lèi)型名或表達(dá)式),例:sizeof(int)其值為2(在TC2.0或BC3.1下)其值為4(在VC6.0下)sizeof(long)其值是4sizeof10L其值也是4unsignedlonga=2;sizeof(a)其值也是4,復(fù)合賦值運(yùn)算符,種類(lèi):+=-=*=/=%=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=%fn”,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的值是字符3B)a的值是浮點(diǎn)型C)不允許字符型和浮點(diǎn)型相加D)a的值是字符1的ASCII碼值加上1,A,6.0,D,12.設(shè)int類(lèi)型的數(shù)據(jù)長(zhǎng)度為2個(gè)字節(jié),則unsignedint類(lèi)型數(shù)據(jù)的取值范圍是_。A)均為2個(gè)字節(jié)B)065535C)-3276832767D)-256至25513.執(zhí)行下列語(yǔ)句后,運(yùn)行結(jié)果為_(kāi)。main()inti=3,j;j=+i+i+;printf(“%dn”,j);A)6B)7C)8D)9,B,C,14.執(zhí)行下列語(yǔ)句后,運(yùn)行結(jié)果為_(kāi)。main()intx=4,y;floatk=4,z;clrscr();printf(%dn,-x*-x*-x);x=4;y=-x*-x*-x;printf(y=%dn,y);z=-k*-k*-k;printf(z=%fn,z);,+x*+x:x為浮點(diǎn)型:從左向右計(jì)算。x為整型:在輸出函數(shù)中,從左向右計(jì)算;在輸出函數(shù)外,先連續(xù)減,然后乘積。,輸出結(jié)果:6Y=1Z=6.000000,15.若a為int類(lèi)型,且其值為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=%dn,x);輸出結(jié)果是:,17.以下各程序的輸出結(jié)果是:,main()intx=0,z,y=z=-1;x+=z-y;printf(x=%dn,x);輸出結(jié)果是:,main()intx=0,z,y=z=-1;x=-x-z-y;printf(x=%dn,x);輸出結(jié)果是:,main()intx=0,z,y=z=-1;/*x*=-y-z-x;*/x=-y-z-x;/*x+=-y-z-x;*/printf(x=%dn,x);輸出結(jié)果是:,main()intx=0,z,y=z=-1;x=-y-z+-x;printf(x=%dn,x);輸出結(jié)果是:,main()intx=0,z,y=z=-1;x+=-x-z-y;printf(x=%dn,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,%dn”,a,a+)的輸出結(jié)果是printf(“%d,%dn”,a,+a)的輸出結(jié)果是printf(“%d,%dn”,+a,a)的輸出結(jié)果是printf(“%d,%dn”,a+,a)的輸出結(jié)果是,18.mainintx=3,y=0;y=+x*-x;/*x=+x*x-;*/printf(“y=%d,x=%dn”,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=%in”,x);,x=7,main()inta=9;a+=a-=a+a;printf(“%dn”,a);此程序執(zhí)行后的結(jié)果是:?,y=27z=9.000000,k=3.000000z=14.000000,k=5.000000,-18,2,main()intx=4,y;floatk=4,z;clrscr();printf(%dn,-x*-x*-x);x=4;y=+x*-x*-x;printf(y=%dn,y);z=+k+-k*-k;printf(z=%f,k=%fn,z,k);k=4;z=+k+-k*k+;printf(z=%f,k=%fn,z,k);k=4;z=+k+-k*+k;printf(z=%f,k=%fn,z,k);,輸出結(jié)果:6y=27z=9.000000,k=3.000000z=14.000000,k=5.000000z=17.000000,k=5.000000,main()intx=26,y=3167;clrscr();printf(x=%d,y=%dn,x,y);x=xy;y=xy;x=xy;printf(x=%d,y=%dn,x,y);,輸出結(jié)果:26,31273127,26,- 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) 鍵 詞:
- 之一 基本 數(shù)據(jù)類(lèi)型 運(yùn)算 表達(dá)式
鏈接地址:http://appdesigncorp.com/p-11504177.html