第4章 數(shù)據(jù)類型和表達(dá)式_第1頁
第4章 數(shù)據(jù)類型和表達(dá)式_第2頁
第4章 數(shù)據(jù)類型和表達(dá)式_第3頁
第4章 數(shù)據(jù)類型和表達(dá)式_第4頁
第4章 數(shù)據(jù)類型和表達(dá)式_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

封面計算機程序設(shè)計C語言程序設(shè)計第三章

數(shù)據(jù)類型與表達(dá)式第四章數(shù)據(jù)類型和表達(dá)式§4數(shù)據(jù)類型與表達(dá)式內(nèi)容算法和數(shù)據(jù)類型就構(gòu)成了一個程序,本章在了解算法以后,介紹C語言所能提供的各種數(shù)據(jù)類型,以便了解各種類型數(shù)據(jù)的使用及其在計算機中的存儲方式。同時介紹了實現(xiàn)各種運算的運算符,以及不同運算符的運算優(yōu)先級和運算結(jié)果的類型。重點:數(shù)據(jù)越界問題、類型轉(zhuǎn)換問題。C語言的數(shù)據(jù)類型各種數(shù)據(jù)類型具有不同的存儲方式、取值范圍及允許的操作。整型實型字符型char短整型short整型int長整型long單精度float雙精度double數(shù)組、結(jié)構(gòu)體struct、共用體union、枚舉類型enum基本類型構(gòu)造類型指針空類型voidC數(shù)據(jù)類型數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作§4-1基本數(shù)據(jù)類型各種數(shù)據(jù)類型具有不同的存儲方式、取值范圍及允許的操作。對數(shù)據(jù)的合理描述,稱之為數(shù)據(jù)結(jié)構(gòu):本節(jié)介紹:無值型:void整型:int/long/short實型:(小數(shù)/浮點數(shù))float/double字符型:char①無值型無值型void

使用:對函數(shù)進(jìn)行描述對指針進(jìn)行描述②整型整型int內(nèi)存長度:2Byte示例:整型數(shù)據(jù)+7和–7的內(nèi)存表示:000000000000011111111111111110011、(7)10=(111)22、原碼:+7:0000000000000111-7:10000000000001113、補碼:+7:0000000000000111-7:1111111111111001+7:–7:③實型實型(小數(shù)、浮點數(shù))單精度 float 內(nèi)存長度:4Byte雙精度 double 內(nèi)存長度:8Byte例如:101.10110.1011011×211④字符型字符型char內(nèi)存長度:1ByteASCII碼表以字符A為例:AASCII碼值6510000010100000101000001七位ASCII代碼表⑤整型數(shù)據(jù)類型類型內(nèi)存表示范圍基本型int2Byte-32768-32767長整型long(int)4Byte-231-231-1短整型short(int)PC機?基本型工作站1Byte-128-127無符號型unsignedunsignedint2Byte0-65535unsignedlongint4Byte0-232-1§4-2常量整型常量浮點型常量單字符常量字符串常量符號常量①整型常量十進(jìn)制表示:用一串連續(xù)的數(shù)字表示十進(jìn)制數(shù)。負(fù)數(shù)在前面加負(fù)號‘-’,除表示整數(shù)0外,不以0開頭。后綴‘l’或‘L’表示長整型,‘u’或‘U’表示無符號數(shù)。 345、31684、0、-23456、459L、356l、567LU八進(jìn)制表示:以數(shù)字0開頭的一個連續(xù)數(shù)字序列,序列中只能有0-7這八個數(shù)字。后綴和負(fù)號的使用與十進(jìn)制相同。045、-078、06745L、而019、423非法八進(jìn)制數(shù)。十六進(jìn)制表示:以0X或0x開頭的連續(xù)數(shù)字和字母序列,序列中只能有0-9、A-F和

a-f這些數(shù)字和字母。后綴和負(fù)號的使用與十進(jìn)制相同。例:0x100X2550xd4ef0X6a7bL②浮點型常量小數(shù)形式。由數(shù)字和小數(shù)點組成,必須有小數(shù)點。例:4.23、0.15、.56、78.、0.0指數(shù)形式。以冪的形式表示,以字母e或E后跟一個以10為底的冪數(shù)。字母e或E之前必須要有數(shù)字,且字母e或E后面的指數(shù)必須為整數(shù),字母e或E的前后及數(shù)字之間不得有空格。例:2.3e5、500e-2、4.5e0而e4、.5e3.6、.e5、e不合法如果表示浮點類型和長雙精度類型,在雙精度數(shù)的最后附加后綴字符f(或F)和l(或L)。例:34.2f、.5F、12.56L、2.5E3L規(guī)范化的指數(shù)形式:小數(shù)點的左邊有一位非0的數(shù)字③單字符常量字符內(nèi)部表示占用一個字節(jié),用對應(yīng)ASCII編碼的二進(jìn)制形式存儲。例如:‘a(chǎn)’、’1’、’\0’、’\n’、’\x17’、’\007’C語言把字符類型看作一種特別短的整數(shù)類型。允許參與算術(shù)運算。例:‘A’+2表示將‘A’的ASCII碼65加2,結(jié)果67是字符‘C’的ASCII碼。轉(zhuǎn)義字符:‘\’,具有控制含義的轉(zhuǎn)義字符,在輸入輸出時會引起設(shè)備完成相應(yīng)的動作。轉(zhuǎn)義字符專義字符功能說明專義字符功能說明\n回車換行\(zhòng)f走紙換頁\t跳格(制表位)\\反斜杠‘\’\v豎向跳格\‘單引號\b退格\ddd八進(jìn)制字符\“雙引號\xhh十六進(jìn)制字符\r回車?yán)}:寫出下面程序的輸出結(jié)果:main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’④字符串常量字符串:雙引號括起來的一串字符字符串結(jié)束標(biāo)志:‘\0’字符串的內(nèi)部表示方法:使用一片連續(xù)的字節(jié)空間,依次存放字符串的每一個字符,在結(jié)尾處加特殊字符‘\0’,表示字符串結(jié)束。注意:字符和字符串表示形式的區(qū)別,’a’和”a”有什么不同?數(shù)字和數(shù)字字符的區(qū)別,1和’1’有什么不同?空字符‘\0’和空格字符‘’的區(qū)別,它們的ASCII碼值有什么不同?⑤符號常量標(biāo)識符形式的常量例:求圓周長#definePI3.1416main(){floatr,l;printf("INPUTr=");scanf("%f",&r);l=2*PI*r;printf("L=%.2f\n",f);}#definePI3.1416π無法輸入

pi不符合習(xí)慣§4-3變量變量的基本操作:①賦值,向變量中存入數(shù)據(jù)值;②取值(引用),取得變量當(dāng)前存儲的值,以便在計算過程中使用。變量定義:類型名<變量表>;變量定義的三個位置:1、函數(shù)或復(fù)合結(jié)構(gòu)(一對{}括起來的一段程序)內(nèi)所有執(zhí)行語句的前面。2、所有函數(shù)外面。3、函數(shù)形參表中。①變量的定義格式:[修飾符]定義符變量表列

longinta,b; 功能:分配內(nèi)存建立變量名與內(nèi)存地址間的對應(yīng)關(guān)系inta,b;a=3;b=a+2;E002E000abE000E002②變量的初始化賦值運算符=:格式:變量=值(常量、變量、表達(dá)式)例如:x=-x;變量的初始化定義時初始化(必須為常量或常量表達(dá)式)

inta=3,b=5;使用前初始化 inta;

a=3;變量名:內(nèi)存地址變量值:內(nèi)存空間記錄的數(shù)據(jù)③整型變量和字符型變量的關(guān)系字符型數(shù)據(jù)在內(nèi)存中以ASCII碼值對應(yīng)的整數(shù)存儲整型和字符型數(shù)據(jù)有對應(yīng)表示的關(guān)系main(){inta=65;charc='A';printf("%d,%d,%c,%c",a,c,a,c);}執(zhí)行結(jié)果:65,A,65,A例題:例題:判斷如下程序的輸出結(jié)果:main(){charc;c='\376';printf("%d,%c",c,c);}§4-4運算符與表達(dá)式運算符:C語言中描述數(shù)據(jù)運算的特殊符號。表達(dá)式:用運算符將C語言的各種運算對象連接起來,組成符合C語法要求的式子,稱表達(dá)式。運算對象包括常量、變量、函數(shù)等。計算:表達(dá)式的求值過程稱計算。C的運算符主要分為四大類:算術(shù)運算符關(guān)系運算符與邏輯運算符位運算符特殊運算符(賦值/條件/逗號/指針/求字節(jié)/強制類型轉(zhuǎn)換/分量/下標(biāo)/函數(shù)調(diào)用)§4-4-1算術(shù)運算符與表達(dá)式五種基本算術(shù)運算符+、-(減法/取負(fù))、*、/、%(求余,模運算符)關(guān)于除法運算/C語言規(guī)定:兩個整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如:5/3=1。關(guān)于求余數(shù)運算%5%3=2 5%2=1要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯。算術(shù)運算表達(dá)式定義: 由算術(shù)運算符、括號和任何有值的對象連接起來的符合C語言要求的式子稱為算術(shù)運算表達(dá)式例如: 3+5*8+2*(3/2)算術(shù)運算表達(dá)式的求解優(yōu)先級與結(jié)合性原則計算過程:對表達(dá)式自左向右依次掃描,當(dāng)某一操作數(shù)兩端的運算符優(yōu)先級不同時,先與優(yōu)先級高的運算符結(jié)合運算;當(dāng)操作數(shù)兩端的運算符優(yōu)先級相同時,按照結(jié)合性的方向(算術(shù)運算:自左向右)進(jìn)行運算。例題:按照優(yōu)先級與結(jié)合性原則計算: 3+5*8/4+2*23+5*8/4+2*2123140232102313123442517§4-4-2自增(減)運算自增(++)、自減(--)運算自增運算使單個變量的值加1,自減運算使單個變量的值減1例如:inta,b=1;b++;a=++b;表達(dá)式與運算規(guī)則自增、自減運算符都有兩種用法:前置運算──運算符放在變量之前:

++變量、--變量先使變量的值增(減)1,然后再以變化后的值參與其它運算,即先增減、后運算。后置運算──運算符放在變量之后:

變量++、變量--變量先參與其它運算,然后再使變量的值增(減)1,即先運算、后增減。例4.1例:a=1,b=2; k=(a++)+(b--)+(b++);a++:先使用a求解表達(dá)式,再執(zhí)行a自增(減)1k=(a++)+(b--)+(b++)k=a+b+b

k=1+2+2k=52

a++、b--、b++

a=2、b=1、b=2結(jié)果

k=5,a=2,b=2例4.2例:a=1,b=2; k=(++a)+(--b)+(++b);++a:先執(zhí)行a自增(減)再使用a求解表達(dá)式1

++a、--b、++b

a=2、b=1、b=22k=(++a)+(--b)+(++b)k=a+b+b

k=2+2+2k=6結(jié)果

k=6,a=2,b=2例4.3

a=1,b=2; k=(++a)+(b--)+(++b)+(a--) 1++a、++ba=2、b=32k=a+b+b+ak=2+3+3+2k=103

b--、a--a=1、b=2結(jié)果

a=1,b=2,k=10說明自增、自減運算,常用于循環(huán)語句中,使循環(huán)控制變量加(減)1,以及指針變量中,使指針指向下(上)一個地址。自增、自減運算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運算時,很容易出錯,所以最好避免這種用法。盡量不要寫不人都不容理解的表達(dá)式§4-4-3賦值運算符與表達(dá)式賦值符號“=”就是賦值運算符,它的作用是將一個表達(dá)式的值賦給一個變量。賦值運算符的一般形式為:變量=表達(dá)式例如,x=5+2如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時,系統(tǒng)自動地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。表達(dá)式計算求解過程: 1、計算整個表達(dá)式的值 2、把表達(dá)式的值賦給變量例如:floatx;

inta=1,b=2;x=a*b/a-’a’+1.5;X=a*b/a–‘a(chǎn)’+1.512213-954-93.5賦值表達(dá)式的值賦值表達(dá)式的值即變量的值。main(){

inta;floatb;b=a=2.5;

printf("a=%d,b=%.2f\n",a,b);}a=2,b=2.00執(zhí)行結(jié)果:§4-4-4復(fù)合賦值運算復(fù)合賦值運算符是由賦值運算符之前再加一個雙目運算符構(gòu)成的。復(fù)合賦值運算的一般格式為: 變量 雙目運算符=

表達(dá)式 └──┬──┘ 復(fù)合賦值運算符等價于:變量=變量雙目運算符(表達(dá)式)復(fù)合賦值運算符C語言規(guī)定的10種復(fù)合賦值運算符如下:+=-=*=/=%=/*復(fù)合算術(shù)運算符5*/&=^=|=<<=>>=/*復(fù)合位運算符5*/例如:x+=3 /*等價于x=x+3*/y*=x+6 /*等價于y=y*(x+6),而不是 y=y*x+6*/表達(dá)式求解:展開:變量=變量<運算符>表達(dá)式

a+=4+5a=a+(4+5)

a*=4+5a=a*(4+5)例4.1求解表達(dá)式:a+=a-=a*a (a=12)§4-4-5逗號表達(dá)式運算符:(,)用逗號(,)把表達(dá)式連接起來的符合C語言的式子稱為逗號表達(dá)式求解:求解所有表達(dá)式的值逗號表達(dá)使得值是最后一個表達(dá)式的值例如:a=(3,5,7) a=3,5,7賦值表達(dá)式逗號表達(dá)式表達(dá)式類型的判斷:優(yōu)先級最低原則§4-5類型轉(zhuǎn)換在C語言中,整型、實

溫馨提示

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

評論

0/150

提交評論