C語言第2章數據類型.ppt
《C語言第2章數據類型.ppt》由會員分享,可在線閱讀,更多相關《C語言第2章數據類型.ppt(62頁珍藏版)》請在裝配圖網上搜索。
,第二章,數據類型、運算符與表達式,本章要點,數據的描述規(guī)則數據的操作規(guī)則,主要內容,2.1C語言的數據類型2.2常量與變量2.3整型數據2.4浮點型數據2.5字符型數據2.6各類數值型數據間的混合運算2.7算術運算符和算術表達式2.8逗號運算符和逗號表達式,為什么要有不同的數據類型,例:學生信息管理姓名年齡成績張三2080.5李四2190.0趙五1976.6,為什么要指定數據類型?,1不同類型的數據在內存中占據不同長度的存儲區(qū)。2不同類型的數據取值范圍不同。3不同類型的數據有不同的操作。,2.1C的數據類型,C語言提供了以下一些數據類型。,數據類型,構造類型,指針類型,空類型(無值類型)void,2.2常量與變量,2.2.1常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:,整型100,125,-100,0實型3.14,0.125,-3.789字符型a,b,2,說明:符號常量為了使用方便,可用一個符號名來代表一個常量。,例2.1在程序中使用符號常量#definePRICE30#includevoidmain()intnum,total;num=10;total=num*PRICE;printf(total=%dn,total);,符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內不能改變,也不能再被賦值。,運行結果:total=300,說明:程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進行運算,說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦不能對符號常量指定類型intPRICE;/*錯誤,PRICE不是變量,不能指定類型*/,2.2常量與變量,2.2.2變量變量代表內存中具有特定屬性的一個存儲單元,它用來存放數據,也就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。,2.2常量與變量,2.2.2變量用來標識對象名字(包括變量、函數、數組、類型等)的有效字符序列。C語言中,有3類標識符:關鍵字、系統(tǒng)預定義的標識符、用戶標識符。變量的名字必須符合C語言對標識符的規(guī)定。C語言規(guī)定標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。,2.2常量與變量,變量命名的規(guī)定:變量的名字必須符合C語言對標示符得規(guī)定例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,ab,2.2常量與變量,注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。,2.3整型數據,2.3.1整型常量的表示形式整型常量即整常數。在語言中,整常數可用以下三種形式表示:(1)十進制整數。如:123,-456,4。(2)八進制整數。以0頭的數是八進制數。如:0123表示八進制數123,等于十進制數83,-011表示八進制數-11,即十進制數-9。,2.3整型數據,2.3.1整型常量的表示形式(3)十六進制整數。以0 x開頭的數是16進制數。如:0 x123,代表16進制數123,等于十進制數291。-0 x12等于十進制數10。,2.3.2整型變量整型變量用來存放整型常量。整型變量的基本類型符為int。C語言中有以下3類整型變量:基本整型,短整型,長整型。,2.3整型數據2.3.2整型變量,注意:ANSIC標準沒有具體規(guī)定以上各類數據所占內存的字節(jié)數而是由各計算機系統(tǒng)自行決定。TurboC中,int型和short型數據都是2個字節(jié),即16個二進制位。long型數據是4個字節(jié),32位。而VC+則給short型數據分配2個字節(jié),16位,int和long型數據都是4個字節(jié),32位。,2.3整型數據2.3.2整型變量,一般情況下,存儲整數時存儲單元中的第一個二進位用來代表數值符號,而在實際應用中,變量的值常常是正的,所以存儲單元全部用來存儲數值本身,此定義無符號整數。所以歸納起來,在C語言中,可以定義和使用6種整型變量。,共六種,有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型,(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int),注意:括號表示其中的內容是可選的.,2.3整型數據2.3.2整型變量,整數類型的有關數據:,類型類型說明符長度數的范圍基本型int4字節(jié)-231231-1短整型short2字節(jié)-215215-1長整型long4字節(jié)-231231-1無符號整型unsignedint4字節(jié)0232-1無符號短整型unsignedshort2字節(jié)0216-1(65535)無符號長整型unsignedlong4字節(jié)0232-1,例2.2整型變量的定義與使用#includevoidmain()inta,b,c,d;/*指定a、b、c、d為整型變量*unsignedu;/*指定u為無符號整型變量*a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d):,說明:可以看到不同種類的整型數據可以進行算術運算,運行結果:a+u=22,b+u=-14,2.3整型數據2.3.3整型數據在內存中的存放形式,數據在內存中以二進制形式存放。如:inti;/*定義為整型變量*/i=10;/*給i賦以整數10*/ii(a)(b),2.3整型數據2.3.3整型數據在內存中的存放形式,實際上,數值是以補碼表示的。一個正整數的補碼和該數的原碼相同。負數的補碼是:將該數的絕對值的二進制形式,按位取反再加1。10的原碼(a)取反(b)得-10的補碼(c),例2.3整型數據的溢出(TC環(huán)境)#includevoidmain()inta,b;a=32767;b=a+1;printf(%d,%dn,a,b);,說明:數值是以補碼表示的。一個整型變量只能容納-3276832767范圍內的數,無法表示大于32767或小于-32768的數。遇此情況就發(fā)生“溢出”。,運行結果:32767,-32768,2.3整型數據2.3.4整型數據的溢出,如果系統(tǒng)給一個整型變量分配2個字節(jié),則變量的最大允許值為32767,若超出最大值就出現(xiàn)溢出現(xiàn)象。,例2.3整型數據的溢出(VC環(huán)境)#includevoidmain()Sum=2147483647;printf(%dn,Sum);Sum=Sum+1;printf(%dn,Sum);Sum=4294967295;printf(%dn,Sum);,運行結果:2147483647,-2147483648,-1,2.3整型數據,2.3.5整型常量的類型整型變量的分類規(guī)則:(1)一個整數,如果其值在-32768+32767范圍內,認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數,如果其值超過了上述范圍,而在-2147483637+2147483647范圍內,則認為它是為長整型。可以將它賦值給一個longint型變量。,2.3整型數據,2.3.5整型常量的類型(3)在一個整常量后面加一個字母l或L,則認為是longint型常量,例如123l、432L、0L等,這往往用于函數調用中。如果函數的形參為longint型,則要求實參也為longint型。(4)一個整常量后面加一個字母u或U,認為是unsignedint型,如12345u在內存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數據)。,2.4浮點型數據,2.4.1浮點型常量的表示形式,兩種表示形式,十進制小數指數,0.1233e-3,注意:字母e(或E)之前必須有數字,且e后面的指數必須為整數,1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e,2.4浮點型數據,2.4.1浮點型常量的表示形式規(guī)范化的指數形式:在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數形式”。,2.4浮點型數據,2.4.2浮點型變量1)浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。,2.4浮點型數據,2.4.2浮點型變量2)浮點型數據在內存中的存放形式:一個浮點型數據一般在內存中占4個字節(jié)(32位)。與整型數據的存儲方式不同,浮點型數據是按照指數形式存儲的。系統(tǒng)把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規(guī)范化的指數形式。,456576.37+.456576376,3)浮點型數據的舍入誤差:由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數字總是有限的。在有效位以外的數字將被舍去。由此可能會產生一些誤差例2.4浮點型數據的舍入誤差#includevoidmain()floata,b;a=123456.789e5;b=a+20;printf(%fn,b);(此例有問題,把e5改為e15,見下頁),說明:一個浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數。,運行結果:123456.789e5,2.4浮點型數據2.4.2浮點型變量,例2.4浮點型數據的舍入誤差,#includevoidmain()floata,b;a=123456.789e15;printf(%fn,a);b=a+20;printf(%fn,b);,2.4浮點型數據,2.4.3浮點型常量的類型C編譯系統(tǒng)將浮點型常量作為雙精度來處理。例如:f=2.45678*4523.65系統(tǒng)先把2.45678和4523.65作為雙精度數,然后進行相乘的運算,得到的乘也是一個雙精度數。如果把一個浮點型常量賦給一個單精度變量f系統(tǒng)給出警告,警告不影響連接和運行最后結果但只取其結果前7位賦給浮點型變量f。如是在數的后面加字母f或F(如1.65f,654.87F),編譯系統(tǒng)就會把它們按單精度處理。,2.5字符型數據,2.5.1字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符,例,a,A,1abc、“a”,2.5.1字符常量,有些以“”開頭的特殊字符稱為轉義字符,例2.5轉義字符的使用#includevoidmain()printf(abctderftgn);printf(htibbjkn);,打印機上的顯示結果:fabcgdehjik,顯示屏上的運行結果:fgdehjk,2.5字符型數據,2.5.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數中可以用下面語句對c1,c2賦值:c1a;c2b;一個字符變量在內存中占一個字節(jié)。,2.5字符型數據,2.5.3字符數據在內存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數據和整型數據之間可以通用。,注意:一個字符數據既可以以字符形式輸出,也可以以整數形式輸出.以字符形式輸出時,系統(tǒng)先將存儲單元中的ASCII碼轉換成相應字符,然后輸出。以整數形式輸出時,直接將ASCII碼作為整數輸出。也可以對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算。,例2.6向字符變量賦予整數。#includevoidmain()charc1,c2;c1=97;c2=98;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);,說明:在第4和第5行中,將整數97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句:c1a;c2b;因為a和b的ASCII碼為97和98,運行結果:ab9798,例2.7大小寫字母的轉換#includevoidmain()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);,說明:程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。C語言允許字符數據與整數直接進行算術運算。,運行結果:ab,2.5字符型數據2.5.3字符數據在內存中的存儲形式及其使用方法,說明:有些系統(tǒng)(如TurboC,VC+)將字符變量定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值范圍是-128127。如果在字符變量中存放一個ASCII碼為0127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數。如果在字符變量中存放一個ASCII碼為128255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負整數。,#includevoidmain()charc1;/改為short類型,如何?c1=255;printf(%dn,c1);,#includevoidmain()shortc1;/改為int類型,如何?c1=32728;printf(%dn,c1);,#includevoidmain()intc1;/改為short類型,如何?c1=65536;printf(%dn,c1);,2.5字符型數據,2.5.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);,2.5字符型數據2.5.4字符串常量,a是字符常量,“a”是字符串常量,二者不同。如:假設被指定為字符變量:charc,c=a;“a”;c“CHINA”;,結論:不能把一個字符串常量賦給一個字符變量。,規(guī)定:在每一個字符串常量的結尾加一個“字符串結束標志”,以便系統(tǒng)據此判斷字符串是否結束。規(guī)定以字符0作為字符串結束標志。,如:如果有一個字符串常量”hina”,實際上在內存中是:,它占內存單元不是5個字符,而是6個字符,最后一個字符為0。但在輸出時不輸出0。,2.5字符型數據2.5.4字符串常量,2.6各類數值型數據間的混合運算,混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算.,說明:這種類型轉換是由系統(tǒng)自動進行的。,數據表示的差異性:,#includemain()floatTotal;Total=1/3;printf(Total=%fnn,Total);,#includemain()floatTotal;Total=1./3;printf(Total=%fnn,Total);,數據表示的差異性:,2.7算術運算符和算術表達式,2.7.1運算符和C算術表達式簡介1.語言的運算符有以下幾類:算術運算符(+-*/%)關系運算符(!)邏輯運算符(!inti;x=3.6;i=x;y=(int)x;printf(x=%f,y=%f,i=%dn,x,y,i);,說明:有兩種類型轉換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉換,如3+6.5。第二種是強制類型轉換。當自動類型轉換不能實現(xiàn)目的時,可以用強制類型轉換。,運行結果:x3.600000,i=3,2.7算術運算符和算術表達式2.7.2算術運算符和算術表達式,4.自增、自減運算符作用是使變量的值增1或減1如:+i,-i(在使用i之前,使i的值加(減)1)i+,i-(在使用i之后,使i的值加(減)1),2.7算術運算符和算術表達式2.7.2算術運算符和算術表達式,i+與+i的區(qū)別:+i是先執(zhí)行ii+1后,再使用i的值;i+是先使用i的值后,再執(zhí)行ii+1。例如:j+i;(i=i+1,j=i)i的值先變成4,再賦給j,j的值為4ji+;(j=i,i=i+1)先將i的值3賦給j,j的值為3,然后i變?yōu)?,2.7算術運算符和算術表達式2.7.2算術運算符和算術表達式,注意:(1)自增運算符(+),自減運算符(-),只能用于變量,而不能用于常量或表達式。(2)+和-的結合方向是“自右至左”。(3)自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址。(4)使用+和-時,為避免二義性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號,如(i+)+j。,2.8逗號運算符和逗號表達式,逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”。如:3+5,6+8,一般形式:表達式1,表達式2,求解過程:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。,逗號表達式的值為14,2.8逗號運算符和逗號表達式,例:逗號表達式a3*5,a*4,分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應先求解a3*5。,a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。,一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式。如:(a3*5,a*4),a+5先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。,2.8逗號運算符和逗號表達式,逗號表達式的一般形式可以擴展為表達式1,表達式2,表達式3,表達式n它的值為表達式n的值。,逗號運算符是所有運算符中級別最低的例:x=(a=3,6*3)x=a=3,6*3,賦值表達式,將一個逗號表達式的值賦給x,x的值等于18,逗號表達式,包括一個賦值表達式和一個算術表達式,x的值為3,整個逗號表達式的值為18。,2.8逗號運算符和逗號表達式,注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如函數參數也是用逗號來間隔的。如:printf(%d,%d,%d,a,b,c);,“a,b,”并不是一個逗號表達式,它是printf函數的3個參數,printf(%d,%d,%d,(a,b,c),b,c),“(a,b,)”是一個逗號表達式,它的值等于的值。,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 語言 數據類型
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://appdesigncorp.com/p-11495448.html