語言的基本數(shù)據(jù)類型(共67張PPT)精選_第1頁
語言的基本數(shù)據(jù)類型(共67張PPT)精選_第2頁
語言的基本數(shù)據(jù)類型(共67張PPT)精選_第3頁
語言的基本數(shù)據(jù)類型(共67張PPT)精選_第4頁
語言的基本數(shù)據(jù)類型(共67張PPT)精選_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章語言(yǔyán)的基本數(shù)據(jù)類型第一頁,共67頁。

C語言數(shù)據(jù)類型

常量(chángliàng)與變量

整型數(shù)據(jù)

實型數(shù)據(jù)

字符型數(shù)據(jù)

各類數(shù)值類型間的混合運算

第二頁,共67頁。2.1C語言數(shù)據(jù)類型

著名(zhùmíng)計算機科學(xué)家NikiklausWirth曾經(jīng)提出了一個非常著名(zhùmíng)的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序??梢娫谝粋€程序中必須存在以下兩點:

(1)數(shù)據(jù)結(jié)構(gòu):是指程序中對數(shù)據(jù)的具體描述及數(shù)據(jù)的組織形式,它包括數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。不同的計算機語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的,比如在C語言中提供的“結(jié)構(gòu)體”數(shù)據(jù)結(jié)構(gòu),而在FORTRAN語言中就不支持這種數(shù)據(jù)結(jié)構(gòu)。

W第三頁,共67頁。(2)算法:是指程序中具體的操作步驟,它處理的對象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在(如整數(shù)、實數(shù)、字符數(shù)等)于程序中,因而算法處理的對象實際上是各種不同的數(shù)據(jù)類型。

可以說算法是程序的靈魂,數(shù)據(jù)結(jié)構(gòu)是程序的加工對象,在處理同一類問題(wèntí)時,如果數(shù)據(jù)結(jié)構(gòu)不同,算法也不同。因而在考慮算法時,必須注意合理地選擇數(shù)據(jù)結(jié)構(gòu)。通常在處理復(fù)雜問題(wèntí)時,應(yīng)當(dāng)綜合考慮數(shù)據(jù)結(jié)構(gòu)和算法,選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)及算法。第四頁,共67頁。

在C語言中,數(shù)據(jù)結(jié)構(gòu)通常是以數(shù)據(jù)類型的形式(xíngshì)出現(xiàn)的,具體數(shù)據(jù)類型如圖所示。

圖2.1.1C語言中的數(shù)據(jù)類型第五頁,共67頁。2.2常量與變量

常量和變量是C語言中的兩種重要的數(shù)據(jù)組織形式。顧名思義,常量就是其值不能被改變的量;變量就是其值可以被任意改變的量。在C語言中,各類數(shù)據(jù)是計算機處理的主要對象,這些數(shù)據(jù)在計算機處理的過程(guòchéng)中,就是以常量和變量的形式表達(dá)和存儲的。

第六頁,共67頁。2.2.1常量和符號常量

在C語言中,把在程序運行過程中其值保持恒定不變的數(shù)據(jù)稱為常量。根據(jù)類型的不同可以將常量分為以下4種:

(1)整型常量:是以整數(shù)(zhěngshù)形式存在的常量,如21,0,-21等。

(2)實型常量:是以浮點形式存在的常量,如,等。

(3)字符常量:是以字符形式存在的常量,如‘a(chǎn)’,‘f’,‘x’等。

(4)字符串常量:是以字符串形式存在的常量,如‘student’,‘for’,‘int’等。第七頁,共67頁。

常量不僅可以直接表示,也可以用一個標(biāo)識符來代替,這種用標(biāo)識符代表的常量稱為符號常量,該標(biāo)識符其實就是(jiùshì)常量的別名。符號常量的一般格式如下:

#define標(biāo)識符字符串

第八頁,共67頁。例2.1編寫一個求圓面積的程序,要求(yāoqiú)輸入圓的半徑,輸出圓面積。

程序

#include<stdio.h>

#definePI3.14

main()

{

floatrad,area;

printf("Inputtheradiusoftheround:\n");

scanf("%f\n",&rad);

area=PI*rad*rad;

printf("Theareaoftheroundis");

printf("%f\n",area);

}

第九頁,共67頁。輸入

Inputtheradiusoftheround:

12.54↙

輸出

Theareaoftheroundis493.770020

#define表示宏定義命令,一般情況下符號常量名用大寫(dàxiě),變量名用小寫,以示區(qū)別,在程序中使用符號常量,具有以下優(yōu)點:

(1)含義清楚。在定義符號常量時,可以按“見名知意”的原則為符號常量命名,這樣在檢查程序時可以很方便地分清常量的含義。比如可以用PI代表圓周率,用area表示面積等。

第十頁,共67頁。(2)修改方便。如果需要修改常量值時,只須在符號常量定義的位置修改即可,這樣其值在整個程序(chéngxù)中都將發(fā)生改變。

在C語言中,系統(tǒng)提供了一個測試某一種類型數(shù)據(jù)所占存儲空間長度的運算符“sizeof”,其格式如下:

sizeof(類型表示符)

例如:利用運算符sizeof求整型int所占的內(nèi)存空間。

sizeof(int);

第十一頁,共67頁。2.2.2變量

變量就是在程序的運行過程中,其值可以根據(jù)需要經(jīng)常更新的數(shù)據(jù)。變量可分為整型變量、實型變量、字符變量等。每個變量都必須(bìxū)具備4個基本要素,即變量名、變量值、變量對應(yīng)的內(nèi)存空間和變量的數(shù)據(jù)類型。

第十二頁,共67頁。1.變量名

為了區(qū)分不同的變量,每個變量必須具有自己的名稱,在對變量命名(mìngmíng)時應(yīng)該遵循以下3點:

(1)變量名只能由字母、數(shù)字和下畫線3種字符組成。

(2)數(shù)字不能作為第1個字符。

(3)英文大寫字母和小寫字母是不同的字符。

下面是合法的標(biāo)識符和變量名:

num,day,mouth,year,max12,Student,_round等。

下面的則是不合法的標(biāo)識符和變量名:

,¥1982,#86,@sohu,a>b,deng-lei等。

第十三頁,共67頁。注意:在C語言中,英文大寫字母和小寫字母被認(rèn)為是兩個不同(bùtónɡ)的字符,如num和NUM就是兩個不同(bùtónɡ)的變量名。一般情況下,變量名用小寫字母表示,而符號常量名用大寫字母表示。

第十四頁,共67頁。2.變量的定義

常量(chángliàng)在使用前可以不用定義,但是變量在使用前必須先定義。定義變量的實質(zhì)就是在內(nèi)存中為變量分配一定大小的空間。定義變量的一般形式如下:

<類型名><變量名>

例如:

intnum1,num2; /*定義整型變量num1,num2*/

floatf1,f2; /*定義浮點型變量f1,f2*/

charc1,c2; /*定義字符型變量c1,c2*/

第十五頁,共67頁。3.變量的用法

為變量賦值的過程稱為(chēnɡwéi)變量的初始化。一般情況下,變量初始化的方法有以下3種:

(1)定義變量的同時為其賦值。

例如:intnum=5;

(2)定義變量后再為其賦值。

例如:

floatpi;

pi=3.14; /*此處“=”表示賦值運算符*/

(3)同時定義多個變量并分別為它們賦值。

例如:intnum1=12;num2=14;num3=16;

第十六頁,共67頁。2.3整型數(shù)據(jù)

在C語言中,用于表達(dá)和處理整數(shù)的數(shù)據(jù)稱為整型數(shù)據(jù)。整型數(shù)據(jù)有整型常量和整型變量之分。

2.3.1整型常量

整型常量即整常量,在C語言中,整型常量可用以下3種形式表示(biǎoshì):

(1)十進(jìn)制整數(shù):如1982,-86,0等。

(2)八進(jìn)制整數(shù):通常把以數(shù)字0開頭的數(shù)稱為八進(jìn)制數(shù),如0154,-0123等。

其中,(0154)8=1×82+5×81+4×80=(108)10

(-0123)8=-(1×82+2×81+3×80)=(-83)10

第十七頁,共67頁。(3)十六進(jìn)制整數(shù):通常把以數(shù)字(shùzì)0x開頭的數(shù)稱為十六進(jìn)制數(shù),如0x154,-0x123等。

其中,

(0x154)16=1×162+5×161+4×160=(340)10

(-0x123)16=-(1×162+2×161+3×160)=(-291)10

第十八頁,共67頁。例2.2整型常量3種形式(xíngshì)的應(yīng)用。

程序

#include<stdio.h>

main()

{

intnum1,num2,num3;

num1=125;

num2=0125;

num3=0x125;

第十九頁,共67頁。printf("Thealgorismnumbersare");

printf("%d,%d,%d\n",num1,num2,num3); /*以十進(jìn)制形式輸出(shūchū)*/

printf("Theoctavonumbersare");

printf("%o,%o,%o\n",num1,num2,num3); /*以八進(jìn)制形式輸出(shūchū)*/

printf("Thehexnumbersare");

printf("%x,%x,%x\n",num1,num2,num3); /*以十六進(jìn)制形式輸出(shūchū)*/

}

第二十頁,共67頁。輸出

Thealgorismnumbersare125,85,293

Theoctavonumbersare175,125,445

Thehexnumbersare7d,55,125

分析

“%d”,“%o”,“%x”為格式轉(zhuǎn)換控制符,分別(fēnbié)用于輸出十進(jìn)制、八進(jìn)制、十六進(jìn)制整數(shù)。

第二十一頁,共67頁。2.3.2整型變量及分類

整型變量是用來存儲整型數(shù)據(jù)(shùjù)的,數(shù)據(jù)(shùjù)在計算機內(nèi)部是以二進(jìn)制形式存放的,根據(jù)數(shù)據(jù)(shùjù)的表示范圍可以將整型變量分為3種。

1.有符號與無符號基本整型變量

有符號基本整型變量一般是以signedint表示的,或直接表示為int,通常用到的都是有符號基本整型變量;無符號基本整型變量一般是以unsignedint表示的,或表示為unsigned,使用無符號整型變量是為了充分利用變量的表示范圍,節(jié)約內(nèi)存。無符號整型變量只能存放不帶符號的整數(shù),如123,456等,而不能存放負(fù)數(shù),如-123,-456等。第二十二頁,共67頁。

2.有符號(fúhào)與無符號(fúhào)長整型變量

有符號(fúhào)長整型變量一般以signedlongint表示,或直接用long表示;無符號(fúhào)長整型變量一般以unsignedlongint表示,或直接用unsignedlong表示。

3.有符號(fúhào)與無符號(fúhào)短整型變量

有符號(fúhào)短整型變量一般以signedshortint表示,或直接用short表示;無符號(fúhào)長整型變量一般以unsignedshortint表示,或直接用unsignedshort表示。ANSI標(biāo)準(zhǔn)定義了整數(shù)數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍,如表所示。

其中,表中“[]”內(nèi)的部分表示可以省略,不影響變量在內(nèi)存中數(shù)的取值范圍,如[signed][long][int]與long是等價的。

第二十三頁,共67頁。數(shù)據(jù)類型字節(jié)長度數(shù)的取值范圍[signed]int2-32768~32767即-215~(215-1)unsigned[int]20~65535即0~(216-1)[signed]long[int]4-2147483648~2147483647即-231~(231-1)unsignedlong[int]40~4294967295即0~(232-1)[signed]short[int]2-32768~32767即-215~(215-1)unsignedshort[int]20~65535即0~(216-1)表2.1整型數(shù)據(jù)(shùjù)的字節(jié)長度和數(shù)的取值范圍第二十四頁,共67頁。例2.3整型數(shù)據(jù)(shùjù)溢出的應(yīng)用。

程序

#include<stdio.h>

main()

{

intnum1=32767,num2;

num2=num1+1;

printf("%d,%d\n",num1,num2);

}

輸出

32767,-32768

第二十五頁,共67頁。分析

有符號基本整型變量int的范圍是-32768~32767即215~(215-1),在上例中num1=32767,由于計算機只識別(shíbié)二進(jìn)制數(shù),因而將num1轉(zhuǎn)換成二進(jìn)制數(shù)。當(dāng)num1+1后,其結(jié)果超出了有符號基本整型變量的范圍,此情況稱為數(shù)據(jù)溢出,當(dāng)達(dá)到最大值后,就又從最小值開始計數(shù),因而當(dāng)32767加1后得不到32768,而得到有符號基本整型變量取值的最小值-32768,如圖所示。

第二十六頁,共67頁。num1:327670111111111111111num2:-327681000000000000000圖2.3.1整型數(shù)據(jù)(shùjù)溢出第二十七頁,共67頁。2.4實型數(shù)據(jù)

在C語言中,用于表達(dá)和處理實數(shù)的數(shù)據(jù)稱為實型數(shù)據(jù)。實型數(shù)據(jù)有實型常量和實型變量之分。

2.4.1實型常量

實型常量即實數(shù),在C語言中又稱為浮點數(shù),實型常量可用以下兩種形式表示(biǎoshì):

(1)普通形式:一般用小數(shù)表示(biǎoshì),書寫時小數(shù)點不能省略。如,.15,5.,等,其中,,0.和.0是等價的。

第二十八頁,共67頁。(2)指數(shù)形式:即科學(xué)(kēxué)計數(shù)法,在C語言中,指數(shù)的表示主要靠字母“e”或“E”來實現(xiàn),e或E跟一個整數(shù)表示以10為底數(shù)的冪。如表示3.14×10-2即,表示5.14×103即5140。值得注意的是C語言中規(guī)定字母“e”或“E”的前后都必須有數(shù)字,并且后面的數(shù)字必須為整數(shù),如e5,e.,等都是不合法的指數(shù)形式。

第二十九頁,共67頁。例2.4實型常量的應(yīng)用(yìngyòng)。

程序

#include<stdio.h>

main()

{

floatx,y;

x=3.14e4;

y=3.14E-4;

printf("x=%f\n",x);

printf("y=%f\n",y);

}

輸出

x=31400.000000

y=0.000314

第三十頁,共67頁。2.4.2實型變量及分類

實型變量是用來存儲實數(shù)數(shù)據(jù)的,在C語言中,可將實型變量分為單精度實型變量、雙精度實型變量和長雙精度實型變量3種,實型數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍如表所示。

表中的有效位表示數(shù)據(jù)在前幾位之內(nèi)是有效的,而其后的數(shù)字則是計算機的隨機數(shù)。如單精度float數(shù)只能(zhīnénɡ)保證前7位數(shù)字的準(zhǔn)確性。

第三十一頁,共67頁。表2.2實型數(shù)據(jù)的字節(jié)長度(chángdù)和數(shù)的取值范圍數(shù)據(jù)類型字節(jié)長度有效位數(shù)的取值范圍單精度float471e-38~1e+38雙精度double8151e-308~1e+308長雙精度longdouble16181e-4932~1e+4932第三十二頁,共67頁。例2.5實型變量的定義與應(yīng)用。

程序(chéngxù)

#include<stdio.h>

main()

{

floatx;

doubley;

x=123456.789;

y=123456.789;

printf("x=%f\n",x);

printf("y=%f\n",y);

}

輸出

x=123456.789062

y=123456.789000

第三十三頁,共67頁。分析

從程序運行結(jié)果可以看出,x的值并不等于賦予的初值,而y的值等于賦予的初值。這是由不同數(shù)據(jù)類型變量的有效數(shù)字(yǒuxiàoshùzì)不同產(chǎn)生的差異。因而在需要定義較大的數(shù)時,應(yīng)選取雙精度double型,甚至選取長雙精度longdouble型,以確保數(shù)據(jù)的準(zhǔn)確性。

第三十四頁,共67頁。2.5字符型數(shù)據(jù)

在C語言中,用于表達(dá)和處理字符的數(shù)據(jù)稱為字符型數(shù)據(jù)。字符型數(shù)據(jù)有字符常量和字符變量之分。

2.5.1字符常量

字符型常量是一個用單撇號括起來的字符。如‘a(chǎn)’,‘A’,‘%’,‘@’等。在C語言中,除了以上形式的字符常量外,還允許(yǔnxǔ)某些特殊形式的字符常量存在,這些字符常量是一種“控制字符”,稱為轉(zhuǎn)義字符。在屏幕上不能顯示,只能產(chǎn)生相應(yīng)的功能操作,如轉(zhuǎn)義字符‘\n’表示換行。C語言中常用的轉(zhuǎn)義字符及其含義,如表所示。

第三十五頁,共67頁。表2.3常用(chánɡyònɡ)的轉(zhuǎn)義字符及其含義字符形式含義ASCII\n換行,從當(dāng)前位置移到下一行開頭10\b退格,從當(dāng)前位置移到前一列8\r回車,從當(dāng)前位置移到本行開頭13\t水平制表,從當(dāng)前位置移到下一個tab位置9\f換頁,從當(dāng)前位置移到下頁開頭12\\反斜杠字符“\”92\'單撇號字符“'”39\''雙撇號字符“''”34第三十六頁,共67頁。表中,“轉(zhuǎn)義字符”的含義是將反斜杠“\”后面(hòumian)的字符轉(zhuǎn)換成相應(yīng)的意思。如‘\n’中的“n”,并不表示字母n,而是作為“換行”符;‘\f’中的“f”不表示字母f,而是作為“換頁”符。除了表中的轉(zhuǎn)義字符外,在C語言中還可以用“\”加上1~3位八進(jìn)制數(shù)表示的ASCII碼來表示,如“\101”表示字母A;“\012”表示換行符。此外還可以用“\”加上1~2位十六進(jìn)制數(shù)來表示,如“x0c”表示換頁符;“x0d”表示回車符等。

第三十七頁,共67頁。定義變量的一般形式如下:

<類型名><變量名>

例如:

intnum1,num2; /*定義整型變量num1,num2*/

floatf1,f2; /*定義浮點型變量f1,f2*/

charc1,c2; /*定義字符型變量c1,c2*/第三十六頁,共67頁。1C語言數(shù)據(jù)類型

著名(zhùmíng)計算機科學(xué)家NikiklausWirth曾經(jīng)提出了一個非常著名(zhùmíng)的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。第五十八頁,共67頁。將一個字符常量存入字符變量中,實際是將該字符的ASCII碼存入存儲單元中,與整數(shù)的存儲形式類似,因此一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。(4)字符串常量:是以字符串形式存在的常量,如‘student’,‘for’,‘int’等。例如:intnum1=12;num2=14;num3=16;程序(chéngxù)

#include<stdio.ANSI標(biāo)準(zhǔn)定義了整數(shù)數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍,如表所示。第二十二頁,共67頁。-32768~32767即-215~(215-1)num2:-32768(3)字符常量:是以字符形式存在的常量,如‘a(chǎn)’,‘f’,‘x’等。不同的計算機語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的,比如在C語言中提供的“結(jié)構(gòu)體”數(shù)據(jù)結(jié)構(gòu),而在FORTRAN語言中就不支持這種數(shù)據(jù)結(jié)構(gòu)。4字符數(shù)據(jù)(shùjù)的字節(jié)長度和數(shù)的取值范圍例2.6轉(zhuǎn)義字符實例。

程序(chéngxù)

#include<stdio.h>

main()

{

printf("\n");

printf("c\tprogram\n");

printf("c\t\bprogram\n");

}

輸出

cprogram

cprogram

第三十八頁,共67頁。分析

程序中第1個輸出語句是換行;第2個輸出語句是在第1列,先輸出字符“c”,然后跳到第9列輸出字符串“program”;第3個輸出語句是在第1列先輸出字符“c”,然后跳到第9列準(zhǔn)備輸出,遇到(yùdào)一個退格控制符“\b”,回到第8列輸出字符串“program”。

第三十九頁,共67頁。2.5.2字符變量及分類

字符變量是用來存儲字符常量的,在內(nèi)存中,一個字符占一個字節(jié)。在C語言中,可將字符變量分為有符號(fúhào)字符變量(char)和無符號(fúhào)字符變量(unsignedchar)。將一個字符常量存入字符變量中,實際是將該字符的ASCII碼存入存儲單元中,與整數(shù)的存儲形式類似,因此一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。字符數(shù)據(jù)的字節(jié)長度和數(shù)的取值范圍如表所示。

第四十頁,共67頁。表2.4字符數(shù)據(jù)(shùjù)的字節(jié)長度和數(shù)的取值范圍數(shù)據(jù)類型字節(jié)長度取值范圍char1-128~127unsignedchar10~255第四十一頁,共67頁。例2.7字符變量實例。

程序(chéngxù)

#include<stdio.h>

main()

{

charc1,c2;

c1='a';

c2=97;

printf("%d\n",c1);

printf("%d\n",c2);

}

輸出

97

97

第四十二頁,共67頁。分析

由于字符‘a(chǎn)’的ASCII碼是97。在本程序中,將字符‘a(chǎn)’賦予c1,將數(shù)字97賦予c2,然后分別以整型形式輸出,結(jié)果都是97;可見字符型數(shù)據(jù)與整形(zhěngxíng)數(shù)據(jù)之間是可以通用的。第四十三頁,共67頁。

2.5.3字符串常量

在C語言中,使用單個字符的情況(qíngkuàng)較少,大多時候是使用字符串。一般情況(qíngkuàng)下,字符用單撇號括起來,如‘a(chǎn)’,‘b’等;而字符串用雙撇號括起來,如“student”,“IloveCProgram!”等。

第四十四頁,共67頁。例2.8字符串常量實例。

程序(chéngxù)

#include<stdio.h>

main()

{

charc;

c='a';

printf("%c\n",c);

printf("a\n");

printf("IloveCProgram!\n");

}

輸出

a

a

IloveCProgram!

第四十五頁,共67頁。分析

本程序中,第1個輸出(shūchū)語句輸出(shūchū)的是一個字符‘a(chǎn)’;第2個輸出(shūchū)語句輸出(shūchū)的是一個字符串“a”,其中包括兩個字節(jié),即‘a(chǎn)’和‘\0’;第3個輸出(shūchū)語句輸出(shūchū)的是一個字符串“IloveCProgram!”。在C語言中每個字符串的結(jié)尾都加一個字符串結(jié)束標(biāo)志,以便系統(tǒng)辨別字符串的結(jié)束。規(guī)定以字符‘\0’作為字符串結(jié)束標(biāo)志,其ASCII碼為0。程序中3個輸出(shūchū)語句的輸出(shūchū)結(jié)果實際上在內(nèi)存中分別如下:

第四十六頁,共67頁。a

a\0

IloveCProgram!\0在C語言中,沒有專門的字符串變量,如果將某個字符串存放在變量中,必須用字符數(shù)組,即將(jíjiāng)字符串中的每個字符存放在數(shù)組中的單元中,關(guān)于數(shù)組將在第7章介紹。

第四十七頁,共67頁。2.6各類數(shù)值型數(shù)據(jù)間的混合運算

在C語言中,整型、實型、字符型數(shù)據(jù)之間可以在同一表達(dá)式中進(jìn)行混合運算。在進(jìn)行運算時,不同類型的數(shù)據(jù)先要轉(zhuǎn)換成同一類型的數(shù)據(jù),然后(ránhòu)再進(jìn)行運算。數(shù)據(jù)的轉(zhuǎn)換方式有2種,即自動轉(zhuǎn)換和強制轉(zhuǎn)換。

1.自動轉(zhuǎn)換

自動轉(zhuǎn)換的規(guī)則有兩點:一是低類型數(shù)據(jù)必須轉(zhuǎn)換成高類型數(shù)據(jù);二是賦值符號“=”右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型。具體轉(zhuǎn)換規(guī)則如圖所示。

第四十八頁,共67頁。圖2.6.1數(shù)據(jù)類型轉(zhuǎn)換規(guī)則第四十九頁,共67頁。數(shù)據(jù)類型自動換轉(zhuǎn)時需要注意以下幾點:

(1)圖中橫向的箭頭表示必定的轉(zhuǎn)換(zhuǎnhuàn)。如字符數(shù)據(jù)char和短整型數(shù)據(jù)short必須先轉(zhuǎn)換(zhuǎnhuàn)成整型數(shù)據(jù)int;實型數(shù)據(jù)float必須先轉(zhuǎn)換(zhuǎnhuàn)成雙精度型double,然后再進(jìn)行各種運算。

(2)圖中縱向箭頭表示當(dāng)運算對象為不同數(shù)據(jù)類型時的轉(zhuǎn)換(zhuǎnhuàn)方向。如某個int型數(shù)據(jù)和某個long型數(shù)據(jù)進(jìn)行運算,應(yīng)先將int型轉(zhuǎn)換(zhuǎnhuàn)成long型,再進(jìn)行運算,其結(jié)果是long型。

第五十頁,共67頁。(3)當(dāng)進(jìn)行(jìnxíng)賦值運算時,將賦值符號右邊的類型轉(zhuǎn)換成賦值符號左邊的類型,其結(jié)果為賦值符號左邊的類型。如果賦值符號右邊為實型float,左邊為整型int,轉(zhuǎn)換時應(yīng)去掉小數(shù)部分;當(dāng)右邊是雙整型double,左邊是實型float,轉(zhuǎn)換時應(yīng)做四舍五入處理。第五十一頁,共67頁。

例2.9不同類型(lèixíng)數(shù)據(jù)的混合運算實例。

程序

#include<stdio.h>

main()

{

intn,num=125;

charc,ch='a';

floatf,flo=3.14;

n=num+ch*flo;

c=num+ch*flo;

f=num+ch*flo;

第五十二頁,共67頁。printf("int->n=%d\n",n);

printf("char->c=%c\n",c);

printf("float->f=%f\n",f);

}

輸出(shūchū)

int->n=429

char->c=?

float->f=429.580017

第五十三頁,共67頁。2.強制轉(zhuǎn)換

上面運算中數(shù)據(jù)類型的轉(zhuǎn)換都是系統(tǒng)自動進(jìn)行的,但有時設(shè)計者需要自己實現(xiàn)(shíxiàn)數(shù)據(jù)類型的轉(zhuǎn)換,這種轉(zhuǎn)換形式稱為強制轉(zhuǎn)換。其一般形式如下:

(數(shù)據(jù)類型名)(表達(dá)式)

其中,數(shù)據(jù)類型名表示待強制轉(zhuǎn)換的類型;表達(dá)式表示強制轉(zhuǎn)換的對象。

例如:(int)(ch+flo)表示將表達(dá)式(ch+flo)的結(jié)果轉(zhuǎn)換成整型數(shù)據(jù)。

第五十四頁,共67頁。例2.10不同類型(lèixíng)數(shù)據(jù)的混合運算實例。

程序

#include<stdio.h>

main()

{

intnum1,num2,num3;

longnum4;

charc;

floatf1,f2;

num1=100;

num2=500;

第五十五頁,共67頁。f1=45.55;

f2=55.55;

num3=num1*num2;

num4=(long)num1*num2;

/*符號“*”的優(yōu)先級高于“()”,因而(yīnér)(long)num1*num2等價于(long)(num1*num2)*/

c=(char)f1*f2;

printf("%d,%ld,%c\n",num3,num4,c);

}

輸出

-15536,50000,├

第五十六頁,共67頁。2.7程序舉例

例2.11求一元二次方程ax2+bx+c=0的兩個根x1和x2。其中a,b,c從鍵盤輸入。

算法

在解方程前,首先應(yīng)判斷a及b是否為0,然后再判斷b2-4ac的值是否為正,最后求方程的根,一元二次方程的根為

上式可以(kěyǐ)分解為設(shè) ,則x1=p+q,x2=p–q

第五十七頁,共67頁。程序(chéngxù)

#include<stdio.h>

main()

{

floata,b,c;

doublex1,x2,p,q,disc;

printf(“Pleaseinputa,bandc:\n”);

scanf(“%f,%f,%f\n”,&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(fabs(disc))/(2*a);/*sqrt函數(shù)是系統(tǒng)函數(shù),表示求二次方根,fabs表示求絕對值*/

第五十八頁,共67頁。if(a==0)

if(b==0)

printf("Error!\n");

else

printf("Theanswerisx1=x2=%f\n",-c/b);

else

if(disc<0)

{

printf("Theansweris\n");

printf("Therealpartis%f,\n",p+q);

printf("Theimagpartis%f\n",p-q);

}

第五十九頁,共67頁。else

{

printf("Theansweris\n");

printf("x1=%f\n",p+q);

printf("x2=%f\n",p-q);

}

}

輸入(shūrù)

Pleaseinputa,bandc:

12,24,12↙

輸出

Theansweris

x1=-1.000000

x2=-1.000000

第六十頁,共67頁。輸入(sh

溫馨提示

  • 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

提交評論