課件第二章數(shù)據(jù)類型2.4-2_第1頁(yè)
課件第二章數(shù)據(jù)類型2.4-2_第2頁(yè)
課件第二章數(shù)據(jù)類型2.4-2_第3頁(yè)
課件第二章數(shù)據(jù)類型2.4-2_第4頁(yè)
課件第二章數(shù)據(jù)類型2.4-2_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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、第1頁(yè)第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 第2頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和表達(dá)式 第3頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和表達(dá)式 第4頁(yè)第5頁(yè)2.4 實(shí)型數(shù)據(jù)2.4.1 實(shí)型常量實(shí)數(shù)又稱浮點(diǎn)數(shù),有兩種表示形式:(1)十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成,必須有小數(shù)點(diǎn),例如3.14159、0.

2、0、9.0、.12345、-9.8等。(2)指數(shù)形式:E(或e)。例如1.23E3、2.71e-5(分別代表1.23103、2.7110-5)等。注意:E(或e)的兩邊必須有數(shù)字,且后面的指數(shù)必須是整數(shù)。一個(gè)實(shí)數(shù)有多種指數(shù)表示形式。例如314.159可以表示為3141.59E-1、314.159E0、3.14159E2、0.314159E3等,把其中的3.14159E2稱為“規(guī)范化的指數(shù)形式”,即小數(shù)點(diǎn)左邊有且只有一位非零數(shù)字。第6頁(yè)實(shí)型變量分為單精度型和雙精度型,C版本還支持長(zhǎng)雙精度型(long double)。(1)單精度型。類型說(shuō)明符為float,在內(nèi)存中占個(gè)字節(jié)(32位),有效數(shù)字的個(gè)

3、數(shù)是位十進(jìn)制數(shù)字,數(shù)值范圍-3.410-383.4 1038 。(2)雙精度型。類型說(shuō)明符為double,在內(nèi)存中占個(gè)字節(jié)(64位),有效數(shù)字的個(gè)數(shù)是15位十進(jìn)制數(shù)字,數(shù)值范圍-1.710-3081.7 10308 。2.4.2 實(shí)型變量第7頁(yè)2.4.3 實(shí)型數(shù)據(jù)的輸入輸出可以使用%f和%e控制輸入(輸出)float類型的數(shù)據(jù),可以使用%lf和%le控制輸入(輸出)double類型的數(shù)據(jù)。f 小數(shù)形式e 指數(shù)形式第8頁(yè)例2.3 實(shí)型數(shù)據(jù)的輸入輸出。#include int main() float a,b; double x,y; scanf(%f,%e,%lf,%le, &a,&b,&x,&

4、y); printf(%f,%e,%lf,%le n, a,b,x,y); return 0;第9頁(yè)例2.3 實(shí)型數(shù)據(jù)的輸入輸出。若輸入為:3.1415,314.15,123.456,12345.6 (回車符)顯示結(jié)果為:3.141500,3.141500e+002,123.456000,1.23456e+004若輸入為:3.1415926,666.666666,123456789.123456789,123456.7898765 顯示結(jié)果為:3.141593,6.666667e+002,123456789.123457,1.234568e+005第10頁(yè)例2.3 實(shí)型數(shù)據(jù)的輸入輸出。 從顯示

5、可見(jiàn):對(duì)于十進(jìn)制小數(shù)形式,單精度型和雙精度型的有效數(shù)字分別是7位和15位。對(duì)于十進(jìn)制指數(shù)形式,都是6位有效數(shù)字。第11頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和表達(dá)式 第12頁(yè)C的字符型常量是用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,例如,A、3、a、?等都是字符型常量。注意A和a是不同的。還有一種特殊形式的字符型常量,就是以轉(zhuǎn)義符“”開(kāi)頭的一些字符構(gòu)成的轉(zhuǎn)義序列。例如n表示“回車換行”。常見(jiàn)的轉(zhuǎn)義字符如表2.2所示。表中ddd表示1到3位8進(jìn)制數(shù)所代表的字符,

6、例如101代表字符A,77代表字符?,43代表字符#。表中xhh表示1到2位16進(jìn)制數(shù)所代表的字符,例如x61代表字符a,x23代表字符#。表中t表示橫向跳格,跳到下一個(gè)制表位置,一個(gè)制表區(qū)占8列,執(zhí)行t就是將當(dāng)前位置跳到下一個(gè)制表區(qū)的開(kāi)頭。2.5 字符型數(shù)據(jù)2.5.1 字符型常量第13頁(yè)表2.2 常見(jiàn)轉(zhuǎn)義字符及其含義字符形式含義abfnrt”dddxhh0警告聲退格,將當(dāng)前位置移到前一列換頁(yè),將當(dāng)前位置移到下一頁(yè)開(kāi)頭換行,將當(dāng)前位置移到下一行開(kāi)頭回車,將當(dāng)前位置移到本行開(kāi)頭橫向跳格,跳到下一個(gè)tab位置反斜線字符單撇號(hào)字符雙撇號(hào)字符1到3位8進(jìn)制數(shù)所代表的字符1到2位16進(jìn)制數(shù)所代表的字符字

7、符串終止字符第14頁(yè)例2.4 轉(zhuǎn)義字符的使用#include int main() printf(A102x43DEtbbx2343x61x62n);printf(A53101tb43141142x63bx64n); return 0;顯示結(jié)果為: ABC#ab A+“A”#abd 第15頁(yè)2.5.2 字符串常量字符串常量是用一對(duì)雙引號(hào)括起來(lái)的若干字符序列。例如:“How are you”,“No.345”。C編譯程序在存儲(chǔ)字符串常量時(shí)自動(dòng)采用字符0作為字符串結(jié)束標(biāo)志,字符0的ASCII碼值為0,它不引起任何控制動(dòng)作,也不是一個(gè)可顯示的字符。因此,字符串“Good”在內(nèi)存中要占5個(gè)字節(jié)數(shù),而不

8、是4個(gè)。注意:A和“A”是不同的,A是字符常量,在內(nèi)存占1個(gè)字節(jié)數(shù);“A”字符串常量,在內(nèi)存占2個(gè)字節(jié)數(shù),包含A和0兩個(gè)字符。第16頁(yè)2.5.3 字符型變量字符變量的類型說(shuō)明符為char,例如:“char c1,c2;”表示定義了兩個(gè)字符變量。字符變量用來(lái)存儲(chǔ)字符常量,一個(gè)字符變量只能存儲(chǔ)1個(gè)字符,即只能存儲(chǔ)1個(gè)字節(jié)的信息,就是說(shuō)一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。例如用如下語(yǔ)句給上面定義的字符變量c1、c2賦值:c1=A;c2=B; 第17頁(yè)2.5.3 字符型變量將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)質(zhì)上是將該字符常量對(duì)應(yīng)的ASCII代碼放到了字符變量中,系統(tǒng)為字符變量所分配的一個(gè)字節(jié)的存儲(chǔ)單元中

9、,存放的是該字符常量的二進(jìn)制形式的ASCII代碼,例如A的ASCII代碼是65,65的二進(jìn)制形式是01000001,所以系統(tǒng)為c1所分配的一個(gè)字節(jié)中,存放的是01000001。 第18頁(yè)2.5.4 字符數(shù)據(jù)的輸入輸出可以使用%c控制輸入(輸出)char類型的數(shù)據(jù)。例2.5 字符變量值的輸入輸出。#include int main() char c1,c2,c3=P; scanf(%c, &c1); c2=D; printf(%c%c%c ,c1,c2,c3); printf(,%c,%c,%c n ,c1,c2,c3); return 0;若輸入為:G 輸出結(jié)果為:GDP,G,D,P 第19頁(yè)

10、例2.6 將大寫英文字符轉(zhuǎn)換為小寫英文字符。#include int main() char c1,c2; printf(請(qǐng)輸入2個(gè)兩個(gè)大寫英文字符:); scanf(%c, %c,&c1,&c2); printf(%c%c , c1, c2); c1=c1+32; c2=c2+32; printf(%c, %cn , c1, c2); return 0;若輸入為:A, B 輸出結(jié)果為:AB a, b 第20頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和

11、表達(dá)式 第21頁(yè)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1 算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符有如下五種:+(加法運(yùn)算符、或正值運(yùn)算符,如13+25、+9);-(減法運(yùn)算符、或負(fù)值運(yùn)算符,如32-15、-2);*(乘法運(yùn)算符,如4*7、5.6*7.8);/(除法運(yùn)算符,如32/5、1.23/3.45);%(求余數(shù)運(yùn)算符,或稱取模運(yùn)算符,如8%5的值為3)。第22頁(yè)關(guān)于除法運(yùn)算符/:若是兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2的結(jié)果不是2.5,而是2;12/24的結(jié)果是0。若除數(shù)和被除數(shù)中有一個(gè)是浮點(diǎn)數(shù)(實(shí)數(shù)),則與數(shù)學(xué)的運(yùn)算規(guī)則相同,例如6/4.0、6.0/4、6.0/4.0的結(jié)果都是1.

12、5。第23頁(yè)關(guān)于求余數(shù)運(yùn)算符:要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),結(jié)果的符號(hào)與%左邊的符號(hào)相同。例如16%4的結(jié)果是0,-17%4的結(jié)果是-1,18%-4的結(jié)果是2,-19%-4的結(jié)果是-3??梢岳?運(yùn)算來(lái)判斷一個(gè)數(shù)能否被另一個(gè)數(shù)整除。 第24頁(yè)2.6.2 算術(shù)表達(dá)式(1)算術(shù)表達(dá)式的概念用算術(shù)運(yùn)算符和圓括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合語(yǔ)言語(yǔ)法規(guī)則的式子,稱為C算術(shù)表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。例如數(shù)學(xué)表達(dá)式(2x+3y)(4xy),寫成語(yǔ)言的算術(shù)表達(dá)式,應(yīng)該是:(2*x+3*y)/(4*x*y),或(2*x+3*y)/4/x/y不能是(2x+3y)

13、/(4xy),也不能是2*x+3*y/(4*x*y),也不能是(2*x+3*y)/4*x*y。第25頁(yè)算術(shù)表達(dá)式的結(jié)果不應(yīng)超過(guò)其能表示的數(shù)的范圍。例如short int型數(shù)的范圍是-32768至32767,下面程序中的算術(shù)表達(dá)式x+y超過(guò)了32767,賦給z顯然是錯(cuò)的。main() short int x, y, z; x=31500; y=24600; z=x+y; printf(“%d”, z);若將x、y和z定義為long型,就沒(méi)有問(wèn)題了。第26頁(yè)(2)算術(shù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)別高低,按次序執(zhí)行。算術(shù)運(yùn)算符的優(yōu)先級(jí)是:先乘除,后加減;求余數(shù)運(yùn)算的優(yōu)先級(jí)與乘

14、除相同;函數(shù)和圓括號(hào)的優(yōu)先級(jí)最高。所謂結(jié)合性是指:當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合?自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,例如:在執(zhí)行“ab+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“ab”;然后再執(zhí)行加c的運(yùn)算。第27頁(yè)2.6.3 不同數(shù)據(jù)類型間的混合運(yùn)算在語(yǔ)言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。有兩種轉(zhuǎn)換方式:自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。第28頁(yè)1

15、自動(dòng)轉(zhuǎn)換自動(dòng)轉(zhuǎn)換就是系統(tǒng)根據(jù)規(guī)則自動(dòng)地將兩個(gè)不同數(shù)據(jù)類型的運(yùn)算對(duì)象轉(zhuǎn)換成同一數(shù)據(jù)類型。自動(dòng)轉(zhuǎn)換又稱為隱式轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換的規(guī)則如圖2.1所示。 圖2.1第29頁(yè)1自動(dòng)轉(zhuǎn)換 圖2.1中,橫向向右的箭頭表示的是必須的轉(zhuǎn)換。char和short 型必須轉(zhuǎn)換成int型參與運(yùn)算,float型必須轉(zhuǎn)換成double型參與運(yùn)算(即使是兩個(gè)float型數(shù)據(jù)相加,也要先轉(zhuǎn)換成double型,然后再相加)。 圖2.1中,縱向箭頭表示的是當(dāng)運(yùn)算對(duì)象為不同類型時(shí)轉(zhuǎn)換的方向。例如,若int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,則先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然后進(jìn)行運(yùn)算,結(jié)果為double型??v向箭頭的方向只是表示

16、數(shù)據(jù)類型的高低,由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,然后再轉(zhuǎn)換成long型,然后再轉(zhuǎn)換成double型。 圖2.1第30頁(yè)注意:自動(dòng)轉(zhuǎn)換只是針對(duì)一個(gè)運(yùn)算符兩側(cè)的兩個(gè)運(yùn)算對(duì)象,不能對(duì)表達(dá)式中的所有運(yùn)算符涉及到的運(yùn)算對(duì)象做一次性的自動(dòng)轉(zhuǎn)換。例如,表達(dá)式6.0/5+4.32和表達(dá)式6/5+4.32,前者的值是5.52,后者的值是5.32。因?yàn)?.0/5是先將5轉(zhuǎn)換成實(shí)型后進(jìn)行運(yùn)算,值是1.2,再與4.32相加,值是5.52。而6/5是按int型運(yùn)算,值是1,再與4.32相加,值是5.32;不要理解成將6/5+4.32中的每個(gè)數(shù)全部轉(zhuǎn)換成實(shí)型后再運(yùn)算。第31頁(yè)2強(qiáng)制轉(zhuǎn)換編寫程序

17、時(shí),可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需類型,強(qiáng)制轉(zhuǎn)換的格式為: (類型名)(表達(dá)式)例如:(float)a將a轉(zhuǎn)換成float型。注意不能寫成float(a)。(int)3.45將3.45轉(zhuǎn)換成int型。(double)(7%6)將7%6的值轉(zhuǎn)換成double型。(float)(x+y)將x+y的值轉(zhuǎn)換成float型。注意不能寫成(float)x+y。第32頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和表達(dá)式 第33頁(yè)2.7 賦值運(yùn)算符

18、和賦值表達(dá)式2.7.1 賦值運(yùn)算符1普通賦值運(yùn)算符普通賦值運(yùn)算符就是“=”,它的作用是將運(yùn)算符右側(cè)表達(dá)式的值賦給運(yùn)算符左側(cè)的變量。例如“x=1.23”的作用是將常量1.23賦給變量x,“y=3*x+5.26”的作用是將表達(dá)式3*x+5.26的值賦給變量y。例如“x= x+1”的作用是:將變量x原來(lái)的值加1后再賦給變量x,若變量x原來(lái)的值是2,則執(zhí)行“x= x+1”后,變量x的值是3。第34頁(yè)2復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符是在普通賦值運(yùn)算符“=”的前面加上其它運(yùn)算符,復(fù)合算術(shù)賦值運(yùn)算符有如下5個(gè):+=、-=、*=、/=、%=另外還有5種復(fù)合賦值運(yùn)算符(=、&=、=、|=),將在后面其它章中介紹。

19、復(fù)合算術(shù)賦值運(yùn)算符的使用規(guī)則為:Xop=Y等價(jià)于X=XopY,其中X代表被賦值的某個(gè)變量,op代表+或-或*或/或%,Y代表某個(gè)表達(dá)式。例如:a+=9 等價(jià)于 a=a+9b*=c+5 等價(jià)于 b=b*(c+5) (注意不等價(jià)于b=b*c+5)d/=2*e-7 等價(jià)于 d=d/(2*e-7) (注意不等價(jià)于d=d/2*e-7)第35頁(yè)2.7.2 賦值表達(dá)式由變量、賦值運(yùn)算符和表達(dá)式連接起來(lái)的式子稱為賦值表達(dá)式。賦值表達(dá)式的值就是被賦值的變量的值。例如,a=123是一個(gè)賦值表達(dá)式,a=123這個(gè)賦值表達(dá)式的值就是a的值,而a的值是123,所以a=123這個(gè)賦值表達(dá)式的值就是123。例如,b+=45

20、6也是一個(gè)賦值表達(dá)式,b+=456這個(gè)賦值表達(dá)式的值就是b的值,因?yàn)閎+=456等價(jià)于b=b+456,若b的初值是300,則執(zhí)行b=b+456后,b的值是756,所以b+=456這個(gè)賦值表達(dá)式的值就是756。第36頁(yè)下面是賦值表達(dá)式的其它幾個(gè)例子:x=(y=23)+(z=17)-8(x的值是32,所以賦值表達(dá)式的值是32)x/=8*(y=2)(若x的初值是32,執(zhí)行x/=8*(y=2)后,x的值是2,所以賦值表達(dá)式的值是2)y1=y2=y3=8(執(zhí)行y1=y2=y3=8后,y1、y2、y3的值都是8,所以賦值表達(dá)式的值是8)第37頁(yè)下面是賦值表達(dá)式的其它幾個(gè)例子:賦值表達(dá)式的后面加上分號(hào)(;)

21、,就成為賦值語(yǔ)句。賦值表達(dá)式也可以在賦值語(yǔ)句之外的其它語(yǔ)句中出現(xiàn)。例如:if (ch=getchar())!= n) printf(“%c”,ch);上面語(yǔ)句中出現(xiàn)了賦值表達(dá)式“ch=getchar()”(函數(shù)getchar()會(huì)在后面第3章中詳細(xì)介紹),ch的值就是賦值表達(dá)式ch=getchar()的值,若該值不等于n,則輸出ch的值。第38頁(yè)2.7.3 賦值表達(dá)式的類型轉(zhuǎn)換當(dāng)賦值運(yùn)算符左邊的變量數(shù)據(jù)類型與右邊的表達(dá)式的數(shù)據(jù)類型不相同時(shí),需要進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,系統(tǒng)把右邊的數(shù)據(jù)轉(zhuǎn)換成左邊數(shù)據(jù)類型的數(shù)據(jù)。轉(zhuǎn)換后可能會(huì)發(fā)生數(shù)據(jù)丟失現(xiàn)象。例如,左邊為int型,右邊為long型,由于long型在內(nèi)存

22、中所占二進(jìn)制位數(shù)(32位)大于int型在內(nèi)存中所占二進(jìn)制位數(shù)(16位),造成long型的高16位無(wú)法復(fù)制到int型變量中去,因此可能丟失數(shù)據(jù)。同理,左邊為float型,右邊為double型,也可能丟失數(shù)據(jù)。下面分幾種情況討論:第39頁(yè)1整型和字符型之間的轉(zhuǎn)換(1)字符型數(shù)據(jù)賦給整型變量由于字符型數(shù)據(jù)在內(nèi)存中占8位,而整型變量在內(nèi)存中占16位,因此將字符型數(shù)據(jù)的8位放到整型變量的低8位中。對(duì)整型變量高8位的處理:有的系統(tǒng)是對(duì)整型變量高8位補(bǔ)0;有的系統(tǒng)是根據(jù)字符型數(shù)據(jù)的最高位的值來(lái)決定補(bǔ)1還是補(bǔ)0。第40頁(yè)(2)整型(int或short或long)數(shù)據(jù)賦給字符型變量由于字符型數(shù)據(jù)在內(nèi)存中占8位,

23、所以只將整型數(shù)據(jù)的低8位送到字符型變量中。例如,若將十進(jìn)制int型數(shù)據(jù)322賦給字符型變量ch,因?yàn)?22的二進(jìn)制形式是0000000101000010,它的低8位是01000010(十進(jìn)制形式是66),所以字符型變量ch的值的二進(jìn)制形式是01000010(即66),若執(zhí)行“printf(“%c”,ch);”語(yǔ)句則輸出字符B,因?yàn)锽的ASCII碼是66(十進(jìn)制)。例如,若將十進(jìn)制int型數(shù)據(jù)65賦給字符型變量ch,因?yàn)?5的二進(jìn)制形式是0000000001000001,它的低8位是01000001(十進(jìn)制形式也是65),所以字符型變量ch的值的二進(jìn)制形式是01000001,若執(zhí)行“printf

24、(”%c”,ch);” 語(yǔ)句則輸出字符A。第41頁(yè)2整型之間的轉(zhuǎn)換(1)int型數(shù)據(jù)賦給long型變量將int型數(shù)據(jù)的16位二進(jìn)制代碼送到long型變量的低16位中,如果int型數(shù)據(jù)值為正(符號(hào)位是0),則long型變量的高16位補(bǔ)0;如果int型數(shù)據(jù)值為負(fù)(符號(hào)位是1),則long型變量的高16位補(bǔ)1。高16位補(bǔ)0或1稱為符號(hào)擴(kuò)展。(2)long型數(shù)據(jù)賦給int型變量只將long型數(shù)據(jù)中的低16位送到int型變量中。(3)unsigned int型數(shù)據(jù)賦給long int型變量此時(shí)不存在符號(hào)擴(kuò)展問(wèn)題,只需將long int型變量的高位補(bǔ)0即可。第42頁(yè)(4)unsigned型數(shù)據(jù)賦給占二進(jìn)制

25、位數(shù)相同的其它整型變量將unsigned型數(shù)據(jù)的內(nèi)容原樣送到其它整型變量中,但是如果范圍超過(guò)其它整型變量允許的范圍,則會(huì)出錯(cuò)。例如,若a是unsigned short int型變量,a=65535,而b是short int型變量,若執(zhí)行“b=a;”,由于a的二進(jìn)制形式是1111111111111111,所以b的二進(jìn)制形式也是1111111111111111,由于最高位(符號(hào)位)是1,因此b成了負(fù)數(shù),根據(jù)補(bǔ)碼知識(shí),可知b是-1,執(zhí)行“printf(“%d”,b);”將輸出-1。第43頁(yè)(5)非unsigned型的整型數(shù)據(jù)賦給占二進(jìn)制位數(shù)相同的unsigned型變量此時(shí)也是原樣照賦(最高的符號(hào)位也

26、一起傳送)。例如,若a是unsigned short int型變量,b是short int型變量,b=-1。若執(zhí)行“a=b;”,由于b的二進(jìn)制形式是1111111111111111,所以a的二進(jìn)制形式也是1111111111111111。若執(zhí)行“printf(“%d”,a);”,將輸出65535。 第44頁(yè)3實(shí)型與整型之間的轉(zhuǎn)換(1)整型數(shù)據(jù)賦給實(shí)型變量系統(tǒng)將整型數(shù)據(jù)轉(zhuǎn)換成單(或雙)精度實(shí)型數(shù)據(jù),保持?jǐn)?shù)值不變,賦值給實(shí)型變量。(2)實(shí)型數(shù)據(jù)賦給整型變量單(或雙)精度實(shí)型數(shù)據(jù)賦給整型變量,舍棄實(shí)型數(shù)據(jù)的小數(shù)部分,將整數(shù)部分賦給整型變量。例如,若n是int型變量,執(zhí)行“n=5.67;”的結(jié)果使n的

27、值為5,執(zhí)行“printf(“%d”,n);”將輸出5。第45頁(yè)4實(shí)型之間的轉(zhuǎn)換(1)float型數(shù)據(jù)賦給double型變量此時(shí)保持?jǐn)?shù)值不變,存放到double型變量中,在內(nèi)存中以64位二進(jìn)制形式存儲(chǔ)。(2)double型數(shù)據(jù)賦給float型變量此時(shí)截取double型數(shù)據(jù)的前7位有效數(shù)字,存放到float型變量中,在內(nèi)存中以32位二進(jìn)制形式存儲(chǔ)。此時(shí)可能要丟失數(shù)據(jù),注意數(shù)值范圍不要溢出。第46頁(yè)主要內(nèi)容2.1 C語(yǔ)言的數(shù)據(jù)類型 2.2 常量和變量 2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù) 2.5 字符型數(shù)據(jù)2.6 算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7 賦值運(yùn)算符和賦值表達(dá)式2.8 其它運(yùn)算符和表達(dá)式 第47頁(yè)

28、2.8 其它運(yùn)算符和表達(dá)式2.8.1 自增、自減運(yùn)算符自增和自減運(yùn)算符都是單目運(yùn)算符,自增運(yùn)算符(+)的作用是使變量的值增1,自減運(yùn)算符(-)的作用是使變量的值減1。對(duì)于int型變量i,+i和i+都等價(jià)于i=i+1,-i和i-都等價(jià)于i=i-1。+i和-i是前綴表示法,i+和i-是后綴表示法。前綴表示法是將i值先增/減1,再在表達(dá)式中使用;后綴表示法是先在表達(dá)式中使用i值,再將i值增/減1。運(yùn)算時(shí)所需變量為一個(gè)第48頁(yè)例2.7 自增、自減運(yùn)算符的使用。#include int main() int i,j,k; i=6; j=+i; /*表達(dá)式+i的值是7 */ k=i+; /*表達(dá)式i+的值

29、是7 */ printf(%d,%d,%dn ,j,k,i); i=-6; j=-i; /*表達(dá)式-i的值是-7 */ k=i-; /*表達(dá)式i-的值是-7 */ printf(%d,%d,%dn ,j,k,i); return 0;輸出結(jié)果為:7,7,8-7,-7,-8 第49頁(yè)要注意的幾點(diǎn):(1)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。 例如,+6、-(i+3*j)等都是非法的。(2)自增、自減運(yùn)算符的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,與單目運(yùn)算符-(取負(fù))和?。ㄟ壿嫹牵┑膬?yōu)先級(jí)相同,結(jié)合方向自右至左。 例如-a+等價(jià)于-(a+)。第50頁(yè)要注意的幾點(diǎn):(3)像“printf(”%d,%d n“ ,i

30、,i+);”這樣出現(xiàn)“i,i+”的語(yǔ)句,在不同的編譯系統(tǒng)中結(jié)果是不同的。若i的值是6,按從左至右求值,輸出“6,6”;按從右至左求值,輸出“7,6”。C-Free是按從右至左求值的。(4)自增或自減運(yùn)算符最好單獨(dú)使用,避免自增或自減運(yùn)算與其它運(yùn)算符混合使用。像i+j這樣的很難理解的表達(dá)式,應(yīng)避免使用。第51頁(yè)2.8.2 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式C語(yǔ)言還提供逗號(hào)運(yùn)算符,逗號(hào)將兩個(gè)表達(dá)式連接起來(lái),形成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式。它的一般形式如下: 表達(dá)式1,表達(dá)式2逗號(hào)表達(dá)式的求值過(guò)程是:先求表達(dá)式1的值,再求表達(dá)式2的值,將表達(dá)式2的值作為逗號(hào)表達(dá)式的值。例如,逗號(hào)表達(dá)式“8-3,6+5”的值是1

31、1,因?yàn)楸磉_(dá)式6+5的值是11。例如,逗號(hào)表達(dá)式“k=2*3,+k”的值是7,因?yàn)榈谝粋€(gè)表達(dá)式k=2*3的值是6,k的值也是6,所以第二個(gè)表達(dá)式+k的值是7。第52頁(yè)2.8.2 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式注意,賦值運(yùn)算符的優(yōu)先級(jí)高于逗號(hào)運(yùn)算符,所以“k=2*3,+k”是逗號(hào)表達(dá)式,不要將其理解為“k=(2*3,+k)”。例如,逗號(hào)表達(dá)式“a=6,a+=9”的值是15。因?yàn)榈谝粋€(gè)表達(dá)式a=6的值是6,a的值也是6,所以第二個(gè)表達(dá)式a+=9(等價(jià)于a=a+9)的值是15。 第53頁(yè)一個(gè)逗號(hào)表達(dá)式可與另一個(gè)表達(dá)式組成新的逗號(hào)表達(dá)式,例如“(k=2*3,+k),4*k”就是這樣的逗號(hào)表達(dá)式。對(duì)于這樣的逗號(hào)表達(dá)式,先計(jì)算逗號(hào)表達(dá)式“(k=2*3,+k)”的值,再計(jì)算表達(dá)式

溫馨提示

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