2.5 數(shù)據(jù)的類型轉(zhuǎn)換_第1頁(yè)
2.5 數(shù)據(jù)的類型轉(zhuǎn)換_第2頁(yè)
2.5 數(shù)據(jù)的類型轉(zhuǎn)換_第3頁(yè)
2.5 數(shù)據(jù)的類型轉(zhuǎn)換_第4頁(yè)
2.5 數(shù)據(jù)的類型轉(zhuǎn)換_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)的類型轉(zhuǎn)換Teacher teaching designCONTENTS 目 錄自動(dòng)類型轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換案例剖析 交流提升案例分析 仿真演練自動(dòng)類型轉(zhuǎn)換PART 01自動(dòng)類型轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換方法:變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種,一種是自動(dòng)轉(zhuǎn)換,一種是強(qiáng)制轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:一、自動(dòng)類型轉(zhuǎn)換(1)、自動(dòng)轉(zhuǎn)換的原則不同類型的數(shù)據(jù)可以進(jìn)行混合運(yùn)算,但是還要遵循一個(gè)原則:一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則。混合運(yùn)算的自動(dòng)轉(zhuǎn)換規(guī)則如圖所示。double float 高級(jí)longuns

2、ignedint char short 低級(jí)(2)、轉(zhuǎn)換過(guò)程中注意點(diǎn)說(shuō)明:、當(dāng)同一表達(dá)式中各數(shù)據(jù)的類型不同時(shí),編譯程序會(huì)自動(dòng)把它們轉(zhuǎn)變成同一類型后再進(jìn)行計(jì)算。轉(zhuǎn)換優(yōu)先級(jí)按上圖箭頭所示:char/shorintunsignedlongfloatdouble即左邊級(jí)別低的類型向右邊轉(zhuǎn)換。具體地說(shuō),若在表達(dá)式中優(yōu)先級(jí)最高的數(shù)據(jù)是double型,則此表達(dá)式中其他數(shù)據(jù)均轉(zhuǎn)換成double 型,且結(jié)果也是double型;自動(dòng)類型轉(zhuǎn)換、賦值過(guò)程中類型轉(zhuǎn)換:C語(yǔ)言賦予了賦值表達(dá)式類型轉(zhuǎn)換功能,一旦出現(xiàn)變量和表達(dá)式類型不一致時(shí),會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,將表達(dá)式的值向變量類型方向進(jìn)行轉(zhuǎn)換。類型轉(zhuǎn)換有前提必須是相近的且

3、可以轉(zhuǎn)換的才能進(jìn)行,主要包括如下表中幾種情況: 如,設(shè)x 是整型數(shù),y是單精度實(shí)型數(shù),z是雙精度實(shí)型數(shù),則: x+a 的值是整型數(shù); x+1.5的值是雙精度實(shí)型數(shù); x+y的值是雙精度實(shí)型數(shù); x+y+z+x的值 是雙精度實(shí)型數(shù); a+a的值是整型數(shù); y+y的值也是雙精度實(shí)型數(shù)。變量類型變量類型表達(dá)式類型表達(dá)式類型轉(zhuǎn)換方式轉(zhuǎn)換方式整型整型實(shí)型實(shí)型截取小數(shù)部分截取小數(shù)部分實(shí)型實(shí)型整型整型小數(shù)部分補(bǔ)小數(shù)部分補(bǔ)0 0單精度實(shí)型單精度實(shí)型雙精度型實(shí)型雙精度型實(shí)型截取小數(shù)部分剩截取小數(shù)部分剩7 7位有效數(shù)字位有效數(shù)字雙精度實(shí)型雙精度實(shí)型單精度實(shí)型單精度實(shí)型小數(shù)部分補(bǔ)小數(shù)部分補(bǔ)0 0到到1616位位字符

4、型字符型整型整型低低8 8位送至字符變量一個(gè)字節(jié)的存儲(chǔ)單元位送至字符變量一個(gè)字節(jié)的存儲(chǔ)單元整型整型字符型字符型ASCASC碼送至整型變量低碼送至整型變量低8 8位位, ,若是帶符號(hào)且若是帶符號(hào)且ASCASC碼碼最高位為最高位為1,1,則補(bǔ)則補(bǔ)1,1,否則補(bǔ)否則補(bǔ)0.0.強(qiáng)制轉(zhuǎn)換PART 02強(qiáng)制轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換(1)強(qiáng)制轉(zhuǎn)換的表示形式是: (類型說(shuō)明符)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型。強(qiáng)制類型轉(zhuǎn)換符的對(duì)象是表達(dá)式,包括常量,變量,函數(shù)和表達(dá)式,把圓括號(hào)括起來(lái)的類型名稱放置在預(yù)轉(zhuǎn)換的表達(dá)式前面。例如: (float)x 把x轉(zhuǎn)換為實(shí)型 (int)(a-b) 把a(bǔ)-b的結(jié)果

5、轉(zhuǎn)換為整型 (int)a-b 把a(bǔ)轉(zhuǎn)換為整型再與b相減在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:1、類型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫(xiě)成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。2、無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類型,如下程序所示。main( ) float x; int y; x=3.6; y=(int)x; printf(%f,%d,x,y); 運(yùn)行結(jié)果為:3.600000 , 3案例剖析 交流提升PART 03案例剖析 交流提升【例1】、分析以下

6、程序main()float a=12.3456;a=(int)(a*100+0.5)/100.0;printf(“a=%f”,a);程序運(yùn)行的結(jié)果為:a=12.350000思考分析:(1)、由于(int) 的作用,(int)(a*100+0.5)運(yùn)算的結(jié)果為為整型1235,(2)、除100.0運(yùn)算時(shí)自動(dòng)轉(zhuǎn)換為實(shí)型12.350000,所以結(jié)果為12.35。2、強(qiáng)制轉(zhuǎn)換的注意點(diǎn)、強(qiáng)制轉(zhuǎn)換類型得到的是一個(gè)所需類型的中間量,原表達(dá)式類型并不發(fā)生變化。也就是說(shuō)強(qiáng)制的結(jié)果只是把變量值轉(zhuǎn)換成要求的類型后參與所在環(huán)境運(yùn)算,而變量本身的 類型 和 值 并未改變。例如,(double)a 只是將變量a的值轉(zhuǎn)換成一

7、個(gè)double型的中間量,其數(shù)據(jù)類型并未轉(zhuǎn)換成double型。、如果對(duì)一個(gè)整體表達(dá)式進(jìn)行類型轉(zhuǎn)換,要注意在表達(dá)式前后加上圓括號(hào),以免出現(xiàn)只對(duì)表達(dá)式前面部分轉(zhuǎn)換的情況。如(int)(x+y)和(int)x+y不同:(int)(x+y)是將x和y相加后,把結(jié)果轉(zhuǎn)換為整型,而(int)x+y是把x轉(zhuǎn)換成int型之后再與y相加。、當(dāng)有些類型無(wú)法轉(zhuǎn)換時(shí),需要強(qiáng)制類型轉(zhuǎn)換的支持。案例剖析 交流提升【例2】main()float a=12.34;int b; b=(int)a; printf( %d, %f,b,a);程序運(yùn)行結(jié)果:12, 12.340000b是int型,a是float類型并不改變。3、無(wú)論

8、是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,如果要轉(zhuǎn)換的量超過(guò)了轉(zhuǎn)換后類型的表示范圍,將出現(xiàn)溢出錯(cuò)誤或不可預(yù)料的結(jié)果。如:main() int a;float b=123456;a=b;printf(“a=%d”,a);程序運(yùn)行結(jié)果:a=0仿真演練 體驗(yàn)探索PART 04仿真演練 體驗(yàn)探索1、分析下列程序的輸出結(jié)果是( ) main( ) double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(%d n, d*y); A) 3 B) 3.2 C) 0 D) 3.07思考題:數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換對(duì)程序輸出結(jié)果的影響?2、數(shù)字字符0的ASCII值為48,若有以下程序運(yùn)行后的

9、輸出結(jié)果是 ( ) 。main() char a=1,b=2; printf(%c,b+1); printf(%dn,b-a); A)3,1 B)50,2 C)2,2 D)2,50 思考題:字符型數(shù)據(jù)與整型數(shù)據(jù)之間的轉(zhuǎn)換方法?3、下列程序執(zhí)行后的輸出結(jié)果是 A) G B) H C) I D) Jmain() int x=f; printf(%c n,A+(x-a+1); 思考: 允許對(duì)字符變量賦以整型值。在輸出時(shí),允許把字符變量按整型量輸出,同樣也允許允許對(duì)整型變量賦以字符值,把整型量按字符量輸出。 仿真演練 體驗(yàn)探索4、設(shè)有char w;int x;float y;double z; 則表達(dá)式 w*x+z-y 值的數(shù)據(jù)類型為( )A)float B)char C)int D)double5、已知大寫(xiě)字母A的ASCII碼值是65,小寫(xiě)字母a的ASCII碼是97,則用八進(jìn)制表示的字符常量101是( )A) 字符A B)字符a C)字符e D)非法的常量6、若變量a是int類型,并執(zhí)行了語(yǔ)句:a=A+1.6;,則正確的敘述是( )A) a的值是字符C B) a的值是浮點(diǎn)型C) 不允許字符型和浮點(diǎn)型相加 D) a的值是字符A的ASCII值加上1。7、以下程序的輸

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論