數(shù)據(jù)類型與表達(dá)式_第1頁(yè)
數(shù)據(jù)類型與表達(dá)式_第2頁(yè)
數(shù)據(jù)類型與表達(dá)式_第3頁(yè)
數(shù)據(jù)類型與表達(dá)式_第4頁(yè)
數(shù)據(jù)類型與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩81頁(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、第2章 數(shù)據(jù)類型與表達(dá)式,本章導(dǎo)讀,本章包括知識(shí)點(diǎn): C語(yǔ)言的基本數(shù)據(jù)類型 數(shù)據(jù)類型與變量、常量的關(guān)系 各種常量的性質(zhì)和定義 表達(dá)式中各種運(yùn)算符的功能和特點(diǎn)及副作用 數(shù)據(jù)類型的相互轉(zhuǎn)換規(guī)則,2.1數(shù)學(xué)上的“數(shù)”到計(jì)算機(jī)中的“數(shù),數(shù)學(xué)中,數(shù)是一門(mén)研究抽象的學(xué)科,數(shù)和數(shù)的運(yùn)算都是抽象的,數(shù)據(jù)不分類型,其運(yùn)算是絕對(duì)精確的,如果88-8=80,1/6=0.16666(循環(huán)小數(shù))。當(dāng)從純數(shù)學(xué)的計(jì)算過(guò)渡到用計(jì)算機(jī)來(lái)解決問(wèn)題時(shí),數(shù)變成了一個(gè)實(shí)在的工程問(wèn)題,在計(jì)算機(jī)中,數(shù)值是具體存在的,它存放在計(jì)算機(jī)的存儲(chǔ)器中,存儲(chǔ)空間是有限的,每一個(gè)存儲(chǔ)單元存放的數(shù)據(jù)范圍都是有限的,不可能無(wú)窮大也不可能無(wú)窮小,如前面所說(shuō)的

2、1/6=0.16666(循環(huán)小數(shù))用計(jì)算機(jī)是表示不出來(lái)的,因?yàn)榇鎯?chǔ)器的空間大小是有限的,用計(jì)算機(jī)的計(jì)算不是抽象的理論值的計(jì)算,而是用工程的方法實(shí)現(xiàn)的計(jì)算,在許多情況下只能得到近似的結(jié)果,用計(jì)算機(jī)來(lái)計(jì)算1/6:得到的結(jié)果為0.166667,而不是無(wú)窮的小數(shù)位,為什么要?jiǎng)澐帧皵?shù)據(jù)類型,怎樣使計(jì)算機(jī)合理的表示現(xiàn)實(shí)生活中各種類型的數(shù)據(jù),也就是說(shuō),使計(jì)算機(jī)能夠根據(jù)數(shù)據(jù)的實(shí)際表示范圍以及數(shù)據(jù)的表示形式,為數(shù)據(jù)分配合理的存儲(chǔ)空間。計(jì)算機(jī)存儲(chǔ)器的資源是十分寶貴的,如何為存儲(chǔ)器做到量體裁衣? 為了解決這個(gè)問(wèn)題,計(jì)算機(jī)對(duì)不同種類的數(shù)據(jù)用不同的“數(shù)據(jù)類型”來(lái)表示,不同的數(shù)據(jù)類型有不同的存儲(chǔ)空間(所表示的數(shù)的范圍不相

3、同)和存儲(chǔ)形式?!皵?shù)據(jù)類型”是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言時(shí)必須首先明確的問(wèn)題,2.2 數(shù)據(jù)類型概述,整型,基本整型int,基本數(shù)據(jù)類型,int 整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)。在Visual C+ 6.0中,int型占4個(gè)字節(jié) 。 float 單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng) double 雙精度浮點(diǎn)數(shù),一般是8個(gè)字節(jié)長(zhǎng) char 字符,一般是1個(gè)字節(jié)長(zhǎng) 用來(lái)表示256個(gè)ASCII字符,或者0255的整數(shù),數(shù)據(jù)類型修飾符,short short int,短整數(shù),一般2個(gè)字節(jié)長(zhǎng)。通常簡(jiǎn)寫(xiě)為short long long int,長(zhǎng)整數(shù),一般是4個(gè)字節(jié)長(zhǎng)。通常簡(jiǎn)寫(xiě)為long long double,長(zhǎng)雙

4、精度(高精度)浮點(diǎn)數(shù),一般是10 個(gè)字節(jié)長(zhǎng)。 signed 用來(lái)修飾char、int、short和long,說(shuō)明他們是有符的 整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號(hào)的,所 以這個(gè)修飾符通常省略 unsigned 用來(lái)修飾char、int、short和long,說(shuō)明他們是無(wú)符號(hào) 的整數(shù)(正整數(shù)和0,2.3常量和變量,2.3.1 常量 2.3.2 變量 2.3.3 變量命名規(guī)則 2.3.4 變量的定義,2.3.1 常量,常量是指直接用于程序中的、不能被程序修改的、固定不變的量。 C語(yǔ)言中的常量值是用數(shù)值或字符串表示的。C語(yǔ)言常量包括整數(shù)、浮點(diǎn)數(shù)、字符、字符串四種類型。 有時(shí)為了使用方便,可

5、用一個(gè)符號(hào)名來(lái)代表一個(gè)常量,這稱為符號(hào)常量。 符號(hào)常量一般定義格式如下: #define 標(biāo)識(shí)符 常量數(shù)據(jù) 例如: #define PI 3.14159 一旦某標(biāo)識(shí)符定義成為一個(gè)常量后,以后在程序處理時(shí),凡是碰到了該標(biāo)識(shí)符,都將替換成對(duì)應(yīng)的常量,2.3.2 變量,變量是指C語(yǔ)言編程中合法的標(biāo)識(shí)符,是用來(lái)存取某種類型值的存儲(chǔ)單元,其中存儲(chǔ)的值可以在程序執(zhí)行的過(guò)程中被改變,變量必須先定義后使用,定義變量的一般形式為:變量類型說(shuō)明符 變量列表=初值,變量類型說(shuō)明符,確定了變量的取值范圍以及對(duì)變量所能進(jìn)行的操作規(guī)范 變量列表,由一個(gè)或多個(gè)變量名組成。當(dāng)要定義多個(gè)變量時(shí),各變量之間用逗號(hào)分隔。 初值是可

6、選項(xiàng),變量可以在定義的同時(shí)賦初值,也可以先定義,在后續(xù)程序中賦初值,C語(yǔ)言中的變量名除了符合標(biāo)識(shí)符的條件之外,還必須滿足下列約定: 變量名不能與關(guān)鍵字相同。 C語(yǔ)言對(duì)變量名區(qū)分大小寫(xiě)。 變量名應(yīng)具有一定的含義,以增加程序的可讀性,例: char esc = a; int i = 1; int sum = 0; float eps = 1.0e-5,2.3.3 變量命名規(guī)則,C語(yǔ)言的標(biāo)識(shí)符的命名規(guī)則是: 1.由字母或下劃線(_)開(kāi)頭,同時(shí)由字母、09的數(shù)字或下劃線(_)組成。 2.不能與關(guān)鍵詞同名。 例如:school_id,_age,es10為合法的標(biāo)識(shí)符。 school-id,man*,2y

7、ear,class為不合法的標(biāo)識(shí)符,標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)對(duì)象名字(包括變量、函數(shù)、數(shù)組、類型等)的有效字符序列。構(gòu)造一個(gè)標(biāo)識(shí)符的名字,需要按照一定的規(guī)則,標(biāo)識(shí)符不宜過(guò)短,過(guò)短的標(biāo)識(shí)符會(huì)導(dǎo)致程序的可讀性變差;但也不宜過(guò)長(zhǎng),否則將增加錄入工作量和出錯(cuò)的可能性,關(guān)鍵字(32個(gè),關(guān)鍵字在C語(yǔ)言中,有其特殊的含義,不能用作一般的標(biāo)識(shí)符使用,即一般的標(biāo)識(shí)符(變量名、類名、方法名等)不能與其同名,2.3.4 變量的定義,C語(yǔ)言對(duì)變量強(qiáng)制定義的目的是: 因?yàn)橹挥性诙x了變量的類型后,系統(tǒng)才知道如何給變量分配存儲(chǔ)空間。如指定變量a為整型,在編譯時(shí)就能為其分配相應(yīng)的4個(gè)字節(jié)的存儲(chǔ)空間,并按整數(shù)方式存儲(chǔ)數(shù)據(jù)。 指定一個(gè)

8、變量屬于一個(gè)特定的類型,在編譯時(shí),能根據(jù)該類型進(jìn)行運(yùn)算是否合法性的檢查,變量的具體定義形式,int a,b,c; /表示定義了a,b,c三個(gè)整型變量,其初值是不確定的; int a=4,b=5,c=6; /表示定義了a,b,c三個(gè)整型變量并分別賦初值4,5,6; float a=3.5,b,c; /表示定義了a,b,c三個(gè)單精度型變量,其中只有a賦初值3.5; char a, b=A, c;/表示定義了a,b,c三個(gè)字符型變量,其中只有變量b賦初值A(chǔ),2.4 整數(shù)類型,2.4.1 整型常量 2.4.2 整型變量,2.4.1 整型常量,整數(shù)常量是不帶小數(shù)的數(shù)值,用來(lái)表示正負(fù)數(shù)。 例如0 x55、

9、0 x55ff、1000000 都是C語(yǔ)言的整數(shù)常量。 整數(shù)常量的取值范圍是有限的,它的大小取決于此類整型數(shù)的類型,與所使用的進(jìn)制形式無(wú)關(guān),整數(shù)常量三種形式:十進(jìn)制、八進(jìn)制、十六進(jìn)制,1)十進(jìn)制整數(shù)是由不以0開(kāi)頭的09的數(shù)字組成的數(shù)據(jù)。 (2)八進(jìn)制整數(shù)是由以0開(kāi)頭的07的數(shù)字組成的數(shù)據(jù)。 (3)十六進(jìn)制整數(shù)是由以0 x或0X開(kāi)頭的09的數(shù)字及AF的字母組成的數(shù)據(jù)。 例如:0,63,83是十進(jìn)制數(shù), 00,077,0123是八進(jìn)制數(shù), 0 x0,0X53,0 x53,0X3f,是 十六進(jìn)制數(shù),2.4.2 整型變量,整型變量類型有short、int、long、unsigned四種說(shuō)明符,數(shù)據(jù)在存

10、儲(chǔ)器中的存儲(chǔ)形式,int a=5; /表示定義了一個(gè)基本類型的int 變量,Visual C+ 6.0的編譯系統(tǒng)為其分配4個(gè)字節(jié)的存儲(chǔ)空間,每個(gè)字節(jié)8位,共32位。 數(shù)在內(nèi)存中是以二進(jìn)制形式表示的,因此,整數(shù)5在內(nèi)存中的表示如下所示: 00000000000000000000000000000101 整數(shù)在存儲(chǔ)單元的存放形式是用其補(bǔ)碼(complement)的形式存放,整數(shù)類型的取值范圍,2.5 實(shí)數(shù)類型,實(shí)數(shù)類型的數(shù)據(jù)即實(shí)型數(shù)據(jù),在C語(yǔ)言中實(shí)型數(shù)據(jù)又稱為浮點(diǎn)數(shù)。 浮點(diǎn)數(shù)是帶有小數(shù)的十進(jìn)制數(shù),可用十進(jìn)制數(shù)形式或指數(shù)形式表示。 C語(yǔ)言的浮點(diǎn)數(shù)常量在機(jī)器中有單精度和雙精度之分。單精度以32位形式存

11、放,雙精度則以64位形式存放,2.5.1 實(shí)型常量,表示形式: (1)十進(jìn)制數(shù)形式:十進(jìn)制整數(shù)+小數(shù)點(diǎn)+十進(jìn)制小數(shù)。 (2)指數(shù)形式:十進(jìn)制整數(shù)+小數(shù)點(diǎn)+十進(jìn)制小數(shù)+E(或e)+正負(fù)號(hào)+指數(shù)。 例如: 3.14159,0.567,9777.12是十進(jìn)制數(shù)形式, 1.234e5,4.90867e-2是指數(shù)形式,2.5.2 實(shí)型變量,1)float類型 float類型是一個(gè)位數(shù)為32位的單精度浮點(diǎn)數(shù)。它具有運(yùn)行速度較快,占用空間較少的特點(diǎn)。 (2)double類型 double類型是一個(gè)位數(shù)為64位的雙精度浮點(diǎn)數(shù)。 雙精度數(shù)在某些具有優(yōu)化和高速運(yùn)算能力的現(xiàn)代處理機(jī)上運(yùn)算比單精度數(shù)快。雙精度類型do

12、uble比單精度類型 float具有更高的精度和更大表示范圍,常常使用,2.6 字符類型,計(jì)算機(jī)中,字符是按其代碼來(lái)存放的(ASCII碼),例如小寫(xiě)字母a,其代碼為97,在存儲(chǔ)時(shí),按整數(shù)97進(jìn)行存取,只是它只占一個(gè)字節(jié)的存儲(chǔ)空間,因此字符型數(shù)據(jù)實(shí)際上是整數(shù)類型的一種。但是,字符數(shù)據(jù)在使用上有自己的特點(diǎn),因此,將其作為一種數(shù)據(jù)類型來(lái)介紹,2.6.1 字符型常量,1) 用單引號(hào)括起來(lái)的一個(gè)字符; 如:A、 1、?等。 (2) 用單引號(hào)括起來(lái)的由反斜杠()引導(dǎo)的轉(zhuǎn)義字符。 如:n、 t、 x41、101等,轉(zhuǎn)義字符表,例2.1】轉(zhuǎn)義字符的輸出,include void main() char ch;

13、 ch=141; printf(%cn%c,ch,ch-32);,2.6.2 字符型變量,字符型變量的類型說(shuō)明符為char,它在機(jī)器中占8位,其范圍為0255。 注意:字符型變量只能存放一個(gè)字符,不能存放多個(gè)字符,例如:char a=am; 這樣定義賦值是錯(cuò)誤的,字符串常量,用一對(duì)雙引號(hào)括起來(lái)的字符序列。 注意:每個(gè)字符串的后面都有一個(gè)0結(jié)束符。 如:“SHANGHAI”,“AbcdeFGHijk”,“How are you,a與“a”的區(qū)別,注意,2.6.3 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式,字符數(shù)據(jù)在內(nèi)存中是以其ASCII碼形式存取的。字符數(shù)據(jù)并不是直接將字符本身放到內(nèi)存單元的,而是將該字符的A

14、SCII碼存放到內(nèi)存單元,如字符A的ASCII碼值為65;其內(nèi)存的具體存儲(chǔ)形式為:01000001 在一定條件下,字符型數(shù)據(jù)和整形數(shù)據(jù)是通用的。需注意的是,字符型數(shù)據(jù)只占一個(gè)字節(jié),只能存取0255范圍內(nèi)的整數(shù),例2.2】 字符數(shù)據(jù)的定義、賦值及存取,include void main() char a,b; /定義a b兩個(gè)字符變量; int i,j; /定義i j兩個(gè)整形變量; a=A; /為字符變量a賦值A(chǔ); i=66; /為整形變量i賦值65; b=i; /將整形變量i的值賦給字符變量b; j=a; /將字符變量a的值賦給整形變量j; printf(i=%d,j=%d,i=%c,j=%c

15、n,i,j,i,j); printf(a=%d,b=%d,a=%c,b=%cn,a,b,a,b);,字符數(shù)據(jù)注意事項(xiàng),字符型常量區(qū)分大小寫(xiě),a和A是兩個(gè)不同的字符常量; 字符型常量只包含一個(gè)字符,如ab不是字符常量; a中,單撇號(hào)是定界符,而不屬于字符常量的一部分。 注意字符0和數(shù)字0的區(qū)別。字符0表示輸出一個(gè)形狀為0的字符,保存字符0只占用內(nèi)存一個(gè)字節(jié),ASCII碼值為48。而數(shù)字0是以整數(shù)存儲(chǔ)方式存儲(chǔ),如果定義它為前面所講的基本int型的話,它占用內(nèi)存4個(gè)字節(jié)來(lái)保存。請(qǐng)讀者仔細(xì)體會(huì)。如: printf(“%c”,0+0); printf(“%d”,0+0); 上機(jī)試試,輸出結(jié)果分別是什么,

16、2.7 不同數(shù)據(jù)類型之間的轉(zhuǎn)換,不同類型的數(shù)據(jù)之間的運(yùn)算稱為混合運(yùn)算。 在混合運(yùn)算中,將會(huì)碰到類型轉(zhuǎn)換的情況。 類型轉(zhuǎn)換可分為自動(dòng)類型轉(zhuǎn)換、強(qiáng)制類型轉(zhuǎn)換兩種,2.7.1 自動(dòng)類型轉(zhuǎn)換,轉(zhuǎn)換從低級(jí)到高級(jí)。 各類型從低級(jí)到高級(jí)的順序?yàn)椋篶harintlongfloatdouble,例如: char ch=A; int i=28; float x=2.36; double y=6.258e+6; 若表達(dá)式為 i+ch+x*y,轉(zhuǎn)換過(guò)程:先將ch 轉(zhuǎn)換成int型,計(jì)算i+ch,由于ch=A,而A的ASC碼值為65,故計(jì)算結(jié)果為93,類型為int型。再將x轉(zhuǎn)換成double型,計(jì)算x*y,結(jié)果為doub

17、le類型。最后將i+ch的值93轉(zhuǎn)換成double型,表達(dá)式的值最后為double類型,2.7.2 強(qiáng)制類型轉(zhuǎn)換,高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需用使用強(qiáng)制類型轉(zhuǎn)換。 這種使用可能會(huì)導(dǎo)致溢出或精度的下降,最好不要使用。 強(qiáng)制類型轉(zhuǎn)換的格式為: (type) 變量; 其中:type 為要轉(zhuǎn)換成的變量類型,例如: (int)(a+b) (強(qiáng)制將a+b的值轉(zhuǎn)換成整型,例2.3】 數(shù)據(jù)類型轉(zhuǎn)換的例子,include void main() float x; int i; x=3.5; i=(int)x; printf(x=%f,x); printf( i=%d,i);,運(yùn)行結(jié)果為: x=3.500000

18、i=3,數(shù)據(jù)類型轉(zhuǎn)換注意事項(xiàng),注意總結(jié)不同類型的數(shù)據(jù)之間賦值的規(guī)律:對(duì)于整型數(shù)據(jù)(含字符型)之間的賦值是按內(nèi)存單元的存儲(chǔ)形式直接傳送,實(shí)型數(shù)據(jù)之間以及整數(shù)與實(shí)數(shù)之間是先轉(zhuǎn)換后賦值。 注意在類型轉(zhuǎn)換過(guò)程中出現(xiàn)的錯(cuò)誤,如: int a=32767; short b=a+1; 上機(jī)運(yùn)行可以發(fā)現(xiàn),得到b的結(jié)果不是32768,因?yàn)樗隽硕陶蛿?shù)的表示范圍,2.8 運(yùn)算符與表達(dá)式,數(shù)據(jù)是需要用來(lái)加工的,如對(duì)數(shù)據(jù)的加減乘除運(yùn)算,大小比較等等,這些都是編寫(xiě)程序必須的,否則程序就沒(méi)有意義了。為解決這個(gè)問(wèn)題,C語(yǔ)言提供了豐富的運(yùn)算符,使得C的運(yùn)算十分靈活方便,2.8 運(yùn)算符與表達(dá)式,2.8.1 算術(shù)運(yùn)算符與算術(shù)

19、表達(dá)式 2.8.2 賦值運(yùn)算符與賦值表達(dá)式 2.8.3 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 2.8.4 邏輯運(yùn)算符與邏輯表達(dá)式 2.8.5 條件運(yùn)算符與條件表達(dá)式 2.8.6 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式,2.8.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式,算術(shù)運(yùn)算符用于算術(shù)運(yùn)算,其操作數(shù)為數(shù)字類型或字符類型,算術(shù)運(yùn)算符表,例:合法的C語(yǔ)言算術(shù)表達(dá)式。 a*b/c-1.5+a+fabs(-5) fabs(-5)是求-5 的絕對(duì)值的庫(kù)函數(shù),”、“,前綴方式是先將操作數(shù)加(或減)1,再將操作數(shù)的值作為算術(shù)表達(dá)式的值;后綴方式是先將操作數(shù)的值作為算術(shù)表達(dá)式的值,再將其加(或減)1,例如:a的值為5, +a為前綴方式,首先將a的值加1

20、,再得到表達(dá)式的值為6; a+為后綴方式,首先得到表達(dá)式的值為5,再將a的值加1。 自增運(yùn)算符和自減運(yùn)算符運(yùn)算對(duì)象只能是變量,不能是常量或表達(dá)式。形式3+或+(i+j)都是非法的表達(dá)式,算術(shù)運(yùn)算符使用說(shuō)明,運(yùn)算符“”有以下規(guī)定:兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如4/3的結(jié)果值為1,舍去小數(shù)部分。 運(yùn)算符“%”,稱之為取模,也就是通常所說(shuō)的求余數(shù),其兩個(gè)操作數(shù)都必須為整數(shù),如“5%3=2”。 前面的運(yùn)算符稱為雙目運(yùn)算符,所謂雙目就是有兩個(gè)操作數(shù),僅有一個(gè)操作數(shù)的運(yùn)算符稱為單目運(yùn)算符,算術(shù)運(yùn)算符使用說(shuō)明,單目算術(shù)運(yùn)算符“+”、“-”的前綴與后綴方式,對(duì)操作數(shù)本身的值的影響是相同的,但其對(duì)表達(dá)式的值的影響

21、是不同的。前綴方式是先將操作數(shù)加(或減)1,再將操作數(shù)的值作為算術(shù)表達(dá)式的值;后綴方式是先將操作數(shù)的值作為算術(shù)表達(dá)式的值,再將其加(或減)1。(設(shè)a=5) (1) b=+a為前綴方式,結(jié)果為b=6,a=6; (2) b=a+為后綴方式,結(jié)果為b=5,a=6,運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,為什么要規(guī)定運(yùn)算符的優(yōu)先級(jí)和結(jié)合性? 如:有合法的C語(yǔ)言表達(dá)式: a*b-1.5/c 但上面的表達(dá)式C語(yǔ)言的編譯系統(tǒng)怎樣來(lái)解釋? 是按(a*b)-(1.5/c)還是(a*b)-1.5)/c)來(lái)計(jì)算,僅有運(yùn)算符,表達(dá)式的解析會(huì)出現(xiàn)二義性,為避免表達(dá)式計(jì)算的二義性,C+語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。 算術(shù)運(yùn)算符的優(yōu)先

22、級(jí)是: (1)+ 、- 優(yōu)先級(jí)最高 (2)然后是* 、/、 % (3)最后是+ - 。 算術(shù)運(yùn)算符的結(jié)合性是:“自左至右的結(jié)合方向”又稱“左結(jié)合性”,即運(yùn)算對(duì)象先與左面的運(yùn)算符優(yōu)先結(jié)合,表達(dá)式a-b*c,b的左側(cè)為減號(hào),右側(cè)為乘號(hào),而乘號(hào)優(yōu)先于減號(hào),等價(jià)于a-(b*c)。如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,如a-b+c,則按規(guī)定的“結(jié)合方向”處理,等價(jià)于(a-b)+c。 顯然,表達(dá)式a*b-1.5/c是按(a*b)-(1.5/c)來(lái)處理,這樣就避免了二義性的問(wèn)題,2.8.2 賦值運(yùn)算符與賦值表達(dá)式,賦值運(yùn)算符“=”就是把右邊操作數(shù)的值賦給左邊操作數(shù) 。 賦值運(yùn)算符左邊操作數(shù)必須是一個(gè)

23、變量,右邊操作數(shù)可以是常量、變量、表達(dá)式 。 例如:表達(dá)式b=a+3,在賦值運(yùn)算符兩邊的操作數(shù)的數(shù)據(jù)類型如果一致,就直接將右邊的數(shù)據(jù)賦給左邊;如果不一致,就需要進(jìn)行數(shù)據(jù)類型自動(dòng)或強(qiáng)制轉(zhuǎn)換,將右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型后,再將右邊的數(shù)據(jù)賦給左邊變量,復(fù)合運(yùn)算符,練習(xí):設(shè)a=12, 計(jì)算表達(dá)式a+=a-=a*12和a+=a-=a*=12的值,賦值表達(dá)式分析,a=b=c=9 正確(賦值表達(dá)式值為9,a,b,c值均為9) a=18+(c=27) 正確(表達(dá)式值為45,a值為45,c值為27) (a*b)=c=9 錯(cuò)誤 (a*b)不是左值 a+=a-=a*a 正確,假設(shè)a的初值為5,表達(dá)式值為-

24、40,a的最終值為-40,賦值運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,賦值運(yùn)算符“=”及復(fù)合賦值運(yùn)算符的優(yōu)先級(jí)為同一級(jí)別,結(jié)合方向?yàn)椤白杂蚁蜃?2.8.3 關(guān)系運(yùn)算符與關(guān)系表達(dá)式,關(guān)系運(yùn)算符用來(lái)對(duì)兩個(gè)操作數(shù)進(jìn)行比較。 關(guān)系表達(dá)式就是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子,其運(yùn)算結(jié)果為布爾邏輯值 。 如果關(guān)系表達(dá)式成立結(jié)果為真(true),否則為假(false)。由于C語(yǔ)言沒(méi)有邏輯型數(shù)據(jù),就用1代表“真”,0代表“假,關(guān)系運(yùn)算符,關(guān)系運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,1)“”和“=”為同一級(jí), “= =”和“!=”為同一級(jí)。前者優(yōu)先級(jí)高于后者。 (2)關(guān)系運(yùn)算符優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符和逗號(hào)運(yùn)算符。 (3 )

25、 關(guān)系運(yùn)算符的結(jié)合性為自左向右,例2.4】 關(guān)系表達(dá)式的運(yùn)用,include void main() char ch=w; int a=2, b=3, c=1, d, x=10; printf(“%d”, ab=c); printf(“%d”, d=ab); printf(“%d”, cha+1); printf(“%d”, d=a+bc); printf(“%d”, b-1=a!=c); printf(“%dn”, 3=x=5);,運(yùn)行結(jié)果為 0 0 1 1 0 1,程序輸出了6個(gè)表達(dá)式的值,其中有兩個(gè)是賦值表達(dá)式,請(qǐng)讀者根據(jù)運(yùn)算符的優(yōu)先級(jí)作出判斷,關(guān)系表達(dá)式注意事項(xiàng),關(guān)系表達(dá)式3=x=5

26、等價(jià)于關(guān)系表達(dá)式 (3=x) =5 當(dāng) x=10時(shí),3=x的值是1,再計(jì)算1=5,得到1。其實(shí),無(wú)論x去何值,關(guān)系表達(dá)式3=x的值不是1就是0,都小于5,即3=x=5的值恒為1。 由此看出關(guān)系表達(dá)式3=x=5無(wú)法正確表示數(shù)學(xué)上的代數(shù)式3x5,關(guān)系表達(dá)式注意事項(xiàng),b=a; 這是一個(gè)賦值表達(dá)式,將變量a的內(nèi)容賦值給變量b;最終變量b單元的內(nèi)容被變量a單元的內(nèi)容覆蓋。 b=a;這個(gè)一個(gè)關(guān)系表達(dá)式,一般用在程序的條件判斷中。如 if(b=a),判斷變量a和變量b單元的內(nèi)容是否相等,如相等,此條件表達(dá)式的結(jié)果為1,否則為0。最終變量b單元的內(nèi)容和變量a單元的內(nèi)容保持各自原值,變量b單元的內(nèi)容不會(huì)被變量a

27、單元的內(nèi)容覆蓋,2.8.4 邏輯運(yùn)算符與邏輯表達(dá)式,C語(yǔ)言如何表示數(shù)學(xué)上的(3x5)? 某城市規(guī)定,去公園可免門(mén)票的條件為:年齡10歲以下(含10歲)的兒童或者年齡70歲以上(含70歲)的老人。 C語(yǔ)言如何表示這個(gè)條件,2.8.4 邏輯運(yùn)算符與邏輯表達(dá)式,邏輯運(yùn)算符用來(lái)對(duì)關(guān)系表達(dá)式進(jìn)行運(yùn)算。邏輯表達(dá)式就是用邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來(lái)的式子,其運(yùn)算結(jié)果為布爾邏輯值,邏輯運(yùn)算符,與、或、非運(yùn)算規(guī)則,邏輯運(yùn)算符的優(yōu)先次序,1)! printf (“%d”, a,運(yùn)行結(jié)果為 0 1 0 1,邏輯表達(dá)式的求解規(guī)則,求解C語(yǔ)言邏輯表達(dá)式時(shí),按從左到右的順序計(jì)算運(yùn)算符兩側(cè)的操作數(shù),一旦得到表達(dá)式的結(jié)果,就停止計(jì)算。 求解邏輯表達(dá)式 ex

溫馨提示

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