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