第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第1頁(yè)
第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第2頁(yè)
第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第3頁(yè)
第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第4頁(yè)
第三章數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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ù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.1 C的數(shù)據(jù)類型空類型指針類型共用體類型結(jié)構(gòu)體類型數(shù)組類型構(gòu)造類型枚舉類型雙精度型單精度型實(shí)型(浮點(diǎn)型)字符型整型基本類型數(shù)據(jù)類型 3.2 常量與變量常量與變量3.2.1常量和符號(hào)常量常量:在程序運(yùn)行過(guò)程中,其值不能被改變的量。例:12、0、-3為整型常量;4.6、-1.23實(shí)型常量,d、a為字符常量。符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表的常量。 1)符號(hào)常量定義格式 #define 常量符號(hào)名常量符號(hào)名 常量常量 2)符號(hào)常量不同于變量,它的值在其作用 域內(nèi)不能改變,也不能再被賦值; 3)習(xí)慣上,符號(hào)常量名用大寫(xiě),變量名用小寫(xiě)。例 3.

2、1: #define PRICE 30 main( ) int num,total; num10; total=num*PRICE;printf(“total=%d”,total); 符號(hào)常量定義語(yǔ)句,PRICE符號(hào)定義后等同于30此句等同于Total=num*30使用符號(hào)常量的好處:(1)含義清楚,見(jiàn)名知義見(jiàn)名知義,使用程序更加清楚易讀;(2)在需要改變一個(gè)常量時(shí)能做到“一改全改一改全改”,便于程序的修改; 例如:如果在程序中多處使用到某物品的價(jià)格,如果價(jià)格用常數(shù)表示常數(shù)表示,則在價(jià)格調(diào)整時(shí),就需要在程序中作多處修改多處修改,若用符號(hào)常量符號(hào)常量PRICE代表價(jià)格,只需改動(dòng)一處一處即可。3.

3、2.2變量變量定義:在程序運(yùn)行時(shí)其值可以改變的量稱為在程序運(yùn)行時(shí)其值可以改變的量稱為變量變量。變量。變量具有一個(gè)具有一個(gè)變量名變量名,并在內(nèi)存中占據(jù)一定的存儲(chǔ)單,并在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。元。變量名變量名即為該變量占用的即為該變量占用的存儲(chǔ)單元的地址存儲(chǔ)單元的地址。變量名和變量值之間的聯(lián)系和區(qū)別3a存儲(chǔ)單元變量值變量名變量值存取過(guò)程變量值存取過(guò)程變量名根據(jù)變量名找到對(duì)應(yīng)的存儲(chǔ)單元取出存儲(chǔ)單元中存儲(chǔ)的變量值關(guān)于標(biāo)識(shí)符關(guān)于標(biāo)識(shí)符(identifier)組成字符的規(guī)定:組成字符的規(guī)定:(1)C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須字母或下劃線。 例:合法的標(biāo)識(shí)符:

4、sum,average,_total,lotus_1_2_3,BASIC 不合法的標(biāo)識(shí)符 M.D.John,¥123,#33,3D64,ab (2) C語(yǔ)言中,區(qū)分大小寫(xiě)字母,大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符。 例:sum和SUM認(rèn)為為不同的標(biāo)識(shí)符。 一般情況下,變量名采用小寫(xiě)字母表示。(3)關(guān)于標(biāo)識(shí)符長(zhǎng)度的規(guī)定:Turbo C允許32個(gè)字符,有的系統(tǒng)如IBM PC和MS C取8個(gè)字符,如果變量名長(zhǎng)度超過(guò)8個(gè),只有前8個(gè)有效,后面的不被識(shí)別。例如: student_name和student_number被認(rèn)為同一變量 注意:這種類型的錯(cuò)誤,系統(tǒng)在編譯時(shí)不會(huì)報(bào)錯(cuò)。(4)在C語(yǔ)言中,要求對(duì)

5、所有用到的變量作強(qiáng)制定義,必須“先定義,后使用”。凡未定義的變量,在編譯時(shí)將被系統(tǒng)檢查出錯(cuò);每個(gè)變量被指定了類型以后就有相應(yīng)的存儲(chǔ)單元;凡未按定義類型進(jìn)行合法運(yùn)算的合法運(yùn)算的,也將在編譯時(shí)被系統(tǒng)檢查出錯(cuò)。3.3 整型數(shù)據(jù)整型數(shù)據(jù)3.3.1整型常量的表示方法 整型常量的表示方法有三種: 1)十進(jìn)制整數(shù)。如123, -456, 0; 2)八進(jìn)制整數(shù)。以0開(kāi)頭的數(shù)是八進(jìn)制。如0123, -011; 3)十六進(jìn)制整數(shù)。以0 x開(kāi)頭的數(shù)是十六進(jìn)制數(shù)。如 0 x123, -0 x18。3.3.2整型變量 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。微機(jī)上使用的C編譯系統(tǒng),每一個(gè)整型變量在內(nèi)存中占用2個(gè)字節(jié)。例: i

6、nt i; i=10; 0 0 0 0 0 0 0 00 0 0 0 1 0 1 0i實(shí)際使用中,整型變量的數(shù)值是以補(bǔ)碼形式存放的。正數(shù)的補(bǔ)碼:正數(shù)的補(bǔ)碼和其原碼的形式相同。例: 10 原碼 補(bǔ)碼負(fù)數(shù)的補(bǔ)碼:絕對(duì)值的二進(jìn)制形式,按位取反再加1 -10 10的原碼 取反 再加1得 -10的補(bǔ)碼0 0 0 0 0 0 0 00 0 0 0 1 0 1 00 0 0 0 0 0 0 00 0 0 0 1 0 1 00 0 0 0 0 0 0 00 0 0 0 1 0 1 01 1 1 1 1 1 1 11 1 1 1 0 1 0 11 1 1 1 1 1 1 11 1 1 1 0 1 1 02.整型

7、變量的分類整型變量的分類類型比特?cái)?shù)最小取值范圍備注有符號(hào)整型16-32768+32767即 -215(215-1)最高位為符號(hào)位無(wú)符號(hào)整型16065535 即 0(216-1)最高位仍代表數(shù)據(jù)有符號(hào)短整型16-32768+32767即 -215(215-1)最高位為符號(hào)位無(wú)符號(hào)短整型16065535 即 0(216-1)最高位仍代表數(shù)據(jù)有符號(hào)長(zhǎng)整型32-2147483648 2147483647即 -231(231-1)最高位為符號(hào)位無(wú)符號(hào)長(zhǎng)整型3204294967295即 0 (232-1)最高位仍代表數(shù)據(jù)3.整型變量的定義整型變量的定義對(duì)于變量的定義,一般是放在一個(gè)函數(shù)的開(kāi)頭部分的聲明部分

8、(子函數(shù)放在子函數(shù)的聲明部分)。例3.2整型變量的定義與使用main() int a,b,c,d; /*定義a.b.c.d為整型變量*/ unsigned u; /*指定u為無(wú)符號(hào)整型變量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); 注:不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算。 4.整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出例3.3整型數(shù)據(jù)的溢出main() int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b); a: 32767 b: -327680 1 1 1 1 1 1 11 1 1 1 1

9、 1 1 11 0 0 0 0 0 0 00 0 0 0 0 0 0 0結(jié)果為:32767,-327683.4實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)3.4.1實(shí)型常量的表示方法實(shí)型常量的表示方法 實(shí)數(shù)(real number)又稱浮點(diǎn)數(shù)(floating-point number).實(shí)數(shù)有兩種表示形式:(1)十進(jìn)制小數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成。例如 123.450.00.5567(2)指數(shù)形式。例:123e4或123E4表示123104。注意:1)E前面必須有數(shù)字,后面的必須為整數(shù); 2)規(guī)范化表示形式:字母e之前的小數(shù)部分中,小 數(shù)點(diǎn)前面應(yīng)有且只能有一位非零的數(shù)字;例如: 2.3478e12 3.099e23

10、為規(guī)范化表示形式 12.908e10 756e2 0.12e3 為非規(guī)范化表示 3.4.2實(shí)型變量實(shí)型變量1.實(shí)型數(shù)據(jù)的存放形式: 一個(gè)實(shí)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。按照指數(shù)形式存儲(chǔ)。一般情況下,小數(shù)部分占用24位(包括符號(hào)位)。指數(shù)部分占用8位,采用規(guī)范化的指數(shù)形式。 例如:3.14159在內(nèi)存中的存放形式。.3141591符號(hào)小數(shù)部分.314159小數(shù)部分1012.實(shí)型變量的分類C實(shí)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(long double型)三類類型比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍float326710-371038double64151610-30

11、710308long double128181910-49311049323.實(shí)型數(shù)據(jù)的舍入誤差 實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去。由此可能會(huì)產(chǎn)生一些誤差。例3.4main () float a,b; a=123456.789e5; b=a+20; printf(“%f”,b);理論答案是:12345678920實(shí)際答案是:12345678848.0000003.4.3實(shí)型常量的類型實(shí)型常量的類型通常的C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。例:一個(gè)實(shí)型變量f,令: f=2.45678*4523.65 系統(tǒng)首先會(huì)把2.45678和452

12、3.65按雙精度處理,各 占64位,運(yùn)算后得到一個(gè)雙精度的乘積,然后取前7 位賦值給實(shí)型變量f.優(yōu)點(diǎn):精度高,計(jì)算結(jié)果更精確;缺點(diǎn):運(yùn)算速度降低。解決方法;在數(shù)的后面加字母f或F。系統(tǒng)會(huì)按單精度處 理。 3.5字符型數(shù)據(jù)字符型數(shù)據(jù)3.5.1字符常量 C的字符常量使用單引號(hào)括起來(lái)的一個(gè)字符。如: a b D $D? 轉(zhuǎn)義字符:字符形式含 義ASCII代碼n換行,將當(dāng)前位置移到下一行開(kāi)頭10t水平制表(跳到下一個(gè)tab位置)9b退格,將當(dāng)前位置移到前一列8r回車,將當(dāng)前位置移到本行開(kāi)頭13f換頁(yè),將當(dāng)前位置一道下頁(yè)開(kāi)頭12反斜杠字符“”92單引號(hào)字符39“雙引號(hào)字符34ddd1到3位8進(jìn)制所代表的

13、字符101代表Axhh1到2 位16進(jìn)制所代表的字符例3.5轉(zhuǎn)義字符的使用main() printf(“ ab ct derftgn”); printf(“htibbj k ”);abcdefghijk3.5.2字符變量字符變量字符變量的定義形式: char c1,c2;說(shuō)明;1)字符變量只能存放一個(gè)字符,每個(gè)變量在內(nèi)存 中只占用一個(gè)字節(jié)的寬度; 2)上述定義式把c1,c2定義為字符型變量,各可以 存放一個(gè)字符;例: c1=a; c2=b; c1=ab3.5.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際并不是把該字符本身放到

14、內(nèi)存單元中,而是將該字符的ASCII代碼放到存儲(chǔ)單元中。例:c1=a實(shí)際作用是在變量c1所占用的內(nèi)存單元中存 放了二進(jìn)制碼01100001;c1c1=a011000011)字符數(shù)據(jù)與整數(shù)的存儲(chǔ)形式類似,使得字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用;2)大小寫(xiě)字母之間轉(zhuǎn)換方便;例3.6向字符變量賦以整數(shù)main() char c1,c2; c1=97; c2=98; printf(“%c%cn”,c1,c2); printf(“%d%dn”,c1,c2);a b97 98向字符變量c1,c2賦以整數(shù)97,98由此可見(jiàn),字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。注意:字符數(shù)注意:字符數(shù)據(jù)只占一個(gè)字據(jù)只占一個(gè)字節(jié),它只

15、能存節(jié),它只能存放放0127范圍范圍內(nèi)的整數(shù)內(nèi)的整數(shù)例3.7大小寫(xiě)字母的轉(zhuǎn)換main()char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c%c”,c1,c2);運(yùn)行結(jié)果: A Ba的ASCII碼為97,A為65。b的ASCII碼為98,A為68。這是這是C語(yǔ)言中語(yǔ)言中字母實(shí)現(xiàn)大小字母實(shí)現(xiàn)大小轉(zhuǎn)換的方法。轉(zhuǎn)換的方法。使用相當(dāng)方便。使用相當(dāng)方便。3.5.4字符串常量字符串常量字符串常量:字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列。 例如:“Hello Visual C#”, “China is the greatest country”字符串常

16、量的存儲(chǔ)形式:字符串各字符的ASCII碼加上結(jié)束 字符0。例如: “Hello Visual C#”,“a”HelloVisualC# 0a0注意注意字符常量字符常量a和和字符串常量字符串常量“a”是是不相同的,不相同的,a存存儲(chǔ)單元中沒(méi)有儲(chǔ)單元中沒(méi)有“0”。因此切近。因此切近字符常量和字符串字符常量和字符串常量混用常量混用 3.6變量賦初值變量賦初值nC語(yǔ)言允許在定義變量的同時(shí)使變量初始化。例: int a=3; /*指定a為整型變量,初值為3*/ float f=3.56; /*指定b為實(shí)型變量,初值為3.56*/ char c=a /*指定c為字符變量,初值為a*/n也可以使被定義的變量

17、的一部分賦初值。例: int a,b,c=5;n如果對(duì)幾個(gè)變量賦予同一個(gè)初值,可寫(xiě)成: int a=3,b=3,c=3; 不可以寫(xiě)成:int a=b=c=3; 該式表示a,b,c的初值都是3,并不表示整個(gè)程序中a,b,c變量一直相等的,只是初值相同。 3.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算n不同類型的數(shù)據(jù)之間進(jìn)行運(yùn)算,級(jí)別低的向級(jí)別高的轉(zhuǎn)換;n轉(zhuǎn)換不需要中間過(guò)程,直接轉(zhuǎn)變?yōu)楦呒?jí)別數(shù)據(jù)類型;n上述轉(zhuǎn)換由系統(tǒng)自動(dòng)進(jìn)行。doublelongintunsignedfloatcharshort低低高高例:i為整型變量,f為float變量,d為double型變量,e為long型。 10

18、+a+i*f-d/ea轉(zhuǎn)整型,i、f轉(zhuǎn)換為double型,e轉(zhuǎn)換為double型。3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.8.1C運(yùn)算符簡(jiǎn)介1.算術(shù)運(yùn)算符 (+ * / %)2.關(guān)系運(yùn)算符 ( = = !=)3.邏輯運(yùn)算符 ( ! & |)4.位運(yùn)算符 ( | &)5.賦值運(yùn)算符 (=及其擴(kuò)展賦值運(yùn)算符)6.條件運(yùn)算符 (? :)7.逗號(hào)運(yùn)算符 ( ,)8.指針運(yùn)算符 (* &)9.求字節(jié)數(shù)運(yùn)算符(sizeof)10.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 ( (類型) )11.分量運(yùn)算符( . )12.下標(biāo)運(yùn)算符( )13.其他 (如函數(shù)調(diào)用運(yùn)算符)3.8.2算術(shù)運(yùn)算符和算

19、術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符 (加法運(yùn)算符,或正值運(yùn)算符。如3+5、3) (減法運(yùn)算符,或負(fù)值運(yùn)算符。如52、3) * (乘法運(yùn)算符。如3*5) / (除法運(yùn)算符。如5/3) % (模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù) 據(jù),如7%4為3)說(shuō)明:兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果值為1,舍去小數(shù)部分。一般情況下,采用“向零取整”的方法即5/3=1, 5/3=1。如果參加如果參加+ * / 運(yùn)算的兩運(yùn)算的兩個(gè)數(shù)中為實(shí)數(shù),個(gè)數(shù)中為實(shí)數(shù),則結(jié)果為則結(jié)果為double型型2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。1)在表達(dá)式求值時(shí),先按

20、運(yùn)算符的優(yōu)先級(jí)別高地次序執(zhí)行;2)如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,則按規(guī)定的結(jié)合方向處理;3)C規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,又稱“左結(jié)合”。有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?,即右結(jié)合。例: a b + c b符號(hào)左邊是減號(hào),右邊是加號(hào),優(yōu)先級(jí)相等,采用左結(jié)合,先a b,然后再c。3.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符一般形式: (類型名類型名)()(表達(dá)式表達(dá)式)例: (double)a (將a轉(zhuǎn)換成double類型) (int)(x+y) (將x+y的值轉(zhuǎn)換成整型) (float)(5%3) (將5%3的值轉(zhuǎn)換成float型)表達(dá)式應(yīng)該用括號(hào)括起

21、來(lái)。例表達(dá)式應(yīng)該用括號(hào)括起來(lái)。例如如:(int)a+b,只強(qiáng)制轉(zhuǎn)換的只強(qiáng)制轉(zhuǎn)換的a的類型,而不是的類型,而不是a+b的結(jié)果。的結(jié)果。例:(int) x 如果x原指定為float型,進(jìn)行強(qiáng)制類型運(yùn)算后得到一個(gè)int型的中間變量,它的值等于x的整數(shù)部分,而x的類型不變,仍為float型。例3.8main()float x; int i; x=3.6; i=(int)x;printf(“x=%f,i=%d”, x, i); 注意:在強(qiáng)制類型轉(zhuǎn)換時(shí),得注意:在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,到一個(gè)所需類型的中間變量,原來(lái)變量的類型未發(fā)生變化。原來(lái)變量的類型未發(fā)生變化。最后結(jié)果:x=3.60

22、0000,i=34.自增、自減運(yùn)算符自增、自減運(yùn)算符作用:作用:使變量的值增使變量的值增1或減或減1.例:例: +i, i (在使用在使用i之前之前,先使,先使i的值加的值加(減減)1) i+, i (在使用在使用i之后之后,使,使i的值加的值加(減減)1) 這兩者有很大區(qū)別,一個(gè)是在這兩者有很大區(qū)別,一個(gè)是在使用之前加使用之前加1,一個(gè)是一個(gè)是 在在使用之后加使用之后加1;例:例:i=3; printf(“%d”,+i); 結(jié)果為輸出結(jié)果為輸出“4” i=3; printf(“%d”,i+); 結(jié)果為輸出結(jié)果為輸出“3”注意:注意:1)自增運(yùn)算符自增運(yùn)算符(+)和自減運(yùn)算符和自減運(yùn)算符()只

23、能只能用于變量用于變量,不能用于常量不能用于常量或或表達(dá)示表達(dá)示,如,如5 +、(a+b)+皆不合皆不合法;法;2)和和 的結(jié)合方式是的結(jié)合方式是“自右至左自右至左”。 例如:例如: i+等同于等同于(i+) i3 printf(“%d”, i+) 結(jié)果為輸出結(jié)果為輸出3,之后之后i的值變成的值變成4。例:例:printf(“%d,%d”,i,i+); 3.9賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符賦值運(yùn)算符賦值符號(hào)賦值符號(hào)“”就是賦值運(yùn)算符,它的作用是將就是賦值運(yùn)算符,它的作用是將一個(gè)一個(gè)數(shù)據(jù)數(shù)據(jù)(常數(shù)或表達(dá)式的值常數(shù)或表達(dá)式的值)賦給一個(gè)賦給一個(gè)變量變量。如:。如:a=3

24、;2.類型轉(zhuǎn)換類型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。(1)將將實(shí)型實(shí)型數(shù)據(jù)數(shù)據(jù)(單、雙精度單、雙精度)賦給賦給整型整型變量時(shí),變量時(shí),舍棄舍棄實(shí)數(shù)實(shí)數(shù)的的小數(shù)部分小數(shù)部分。例如:。例如:i為整型,為整型,i=3.16的結(jié)果為的結(jié)果為i=3;(2)將整型數(shù)據(jù)賦給單、雙精度變量時(shí),將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變數(shù)值不變,但以,但以浮點(diǎn)數(shù)形式浮點(diǎn)數(shù)形式存儲(chǔ)到變量中;存儲(chǔ)到變量中;(3)將一個(gè)將一個(gè)double型型數(shù)據(jù)賦給數(shù)據(jù)賦給float變量變量,截取其前面,

25、截取其前面7位有效數(shù)字位有效數(shù)字,存放到,存放到float變量的存儲(chǔ)單元變量的存儲(chǔ)單元(32位位),需要,需要注意不要超范圍;將一個(gè)注意不要超范圍;將一個(gè)float型型數(shù)據(jù)賦給數(shù)據(jù)賦給double變量變量時(shí),時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到數(shù)值不變,有效位數(shù)擴(kuò)展到16位位,以,以64位存儲(chǔ)位存儲(chǔ);(4)字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占1個(gè)字節(jié),個(gè)字節(jié),而整型變量為而整型變量為2個(gè)字節(jié),因此將個(gè)字節(jié),因此將字符數(shù)據(jù)字符數(shù)據(jù)(8位位)放到整放到整型變量型變量低低8位位中。在中。在Turbo C中,若字符的中,若字符的最高位為最高位為0,則整型變量則整型變量最

26、高最高8位補(bǔ)位補(bǔ)0;若;若最高位為最高位為1,則則高高8位補(bǔ)位補(bǔ)1.這稱之為這稱之為“符號(hào)擴(kuò)展符號(hào)擴(kuò)展”。1 1 1 1 1 1 1 0c=376i:11 1 1 1 1 1 01 1 1 1 1 1 1 1(5)將一個(gè)將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)型數(shù)據(jù)賦給一個(gè)char型變型變量時(shí),只將量時(shí),只將低低8位位原封不動(dòng)地原封不動(dòng)地送到送到char型變量型變量(即即截?cái)嘟財(cái)?00 1 0 0 0 0 10 0 0 0 0 0 0 1int i=289char c; c=i00 1 0 0 0 0 1n(6)將帶符號(hào)的整數(shù)數(shù)據(jù)類型(int)賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,將整

27、型數(shù)的16位送到long型的低16位中,若整數(shù)數(shù)據(jù)類型若整數(shù)數(shù)據(jù)類型 的的最高位為最高位為0,則則long變量變量最高最高16位補(bǔ)位補(bǔ)0;若;若最高位為最高位為1,則則高高16位補(bǔ)位補(bǔ)1. 將一個(gè)將一個(gè)long型數(shù)據(jù)賦給一個(gè)型數(shù)據(jù)賦給一個(gè)int型變量,只將型變量,只將long型型數(shù)據(jù)中低數(shù)據(jù)中低16位原封不動(dòng)送到整型變量位原封不動(dòng)送到整型變量(即即截?cái)嘟財(cái)?。例:例: int a; long b=8; a=b 0 0 0 0 1 0 0 00 0 0 0 0 0 0 00 0 0 0 1 0 0 0 (7)將將unsigned int型數(shù)據(jù)型數(shù)據(jù)賦給賦給long int型型變量,不存變量,不存

28、在符號(hào)擴(kuò)展問(wèn)題,只需將在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)高位補(bǔ)0即可。將一即可。將一unsigned類型類型數(shù)據(jù)賦給一個(gè)數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同占字節(jié)數(shù)相同的整型變量,若字符的的整型變量,若字符的最高位為最高位為0,則整型變量則整型變量最高最高8位補(bǔ)位補(bǔ)0;若;若最高位為最高位為1,則則高高8位補(bǔ)位補(bǔ)1.unsigned型變量的內(nèi)容型變量的內(nèi)容原樣送到原樣送到非非unsigned型型變量中,但如果變量中,但如果數(shù)據(jù)范圍超過(guò)數(shù)據(jù)范圍超過(guò)相應(yīng)的整型范圍,則會(huì)出相應(yīng)的整型范圍,則會(huì)出現(xiàn)現(xiàn)數(shù)據(jù)錯(cuò)誤數(shù)據(jù)錯(cuò)誤;(8)將非將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變型變量,也是

29、量,也是數(shù)值位連同符號(hào)位原樣傳送數(shù)值位連同符號(hào)位原樣傳送。例:例:main( ) unsigned a; int b=-1; a=b; printf(“%u”,a);11 1 1 1 1 1 11 1 1 1 1 1 1 111 1 1 1 1 1 11 1 1 1 1 1 1 1b的補(bǔ)碼a原(補(bǔ))碼 運(yùn)行結(jié)運(yùn)行結(jié)果:果:65535不同類型的整型數(shù)據(jù)間的賦值歸根到底就是一條:按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。所以:大家一定要好好熟悉原碼,補(bǔ)碼的概念。最后各位記?。鹤詈蟾魑挥涀。翰煌瑪?shù)據(jù)類型之不同數(shù)據(jù)類型之間的賦值出錯(cuò),間的賦值出錯(cuò),C C語(yǔ)言的編譯系語(yǔ)言的編譯系統(tǒng)并不會(huì)提示出統(tǒng)并不會(huì)提示出錯(cuò)。錯(cuò)。3.復(fù)合運(yùn)算符復(fù)合運(yùn)算

溫馨提示

  • 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)論