chap3 數(shù)據(jù)類(lèi)型和表達(dá)式(1)_第1頁(yè)
chap3 數(shù)據(jù)類(lèi)型和表達(dá)式(1)_第2頁(yè)
chap3 數(shù)據(jù)類(lèi)型和表達(dá)式(1)_第3頁(yè)
chap3 數(shù)據(jù)類(lèi)型和表達(dá)式(1)_第4頁(yè)
chap3 數(shù)據(jù)類(lèi)型和表達(dá)式(1)_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 數(shù)據(jù)類(lèi)型和表達(dá)式 3.1 C+的字符集、關(guān)鍵字和標(biāo)識(shí)符3.2 C+的基本數(shù)據(jù)類(lèi)型3.3 運(yùn)算符與表達(dá)式3.4 常用庫(kù)函數(shù)3.1 C+的字符集、關(guān)鍵字和標(biāo)識(shí)符 C+語(yǔ)言的字符集編寫(xiě)C+程序必須使用C+語(yǔ)言字符集中的字符:大寫(xiě)、小寫(xiě)英文字母各26個(gè);阿拉伯?dāng)?shù)字10個(gè);運(yùn)算符、標(biāo)點(diǎn)符號(hào)及其他字符30個(gè): + - * / % = ! & | ; : ? , . “ ( ) # _ 空格例外:源程序注釋中可以包含字符集以外的字符。字符串作為數(shù)據(jù)也可以包含字符集以外的字符。 標(biāo)識(shí)符標(biāo)識(shí)符的用途:程序中的變量名、函數(shù)名、數(shù)組名、類(lèi)型名、命名空間名等的命名。標(biāo)識(shí)符的構(gòu)成:由大小寫(xiě)字母、數(shù)字和下劃線組成

2、,且首字符必須是字母或下劃線,不能與關(guān)鍵字同名。說(shuō)明:標(biāo)識(shí)符中不能含有空格、標(biāo)點(diǎn)符號(hào)和其他字符。標(biāo)識(shí)符區(qū)分大小寫(xiě)。例如,d和D是不同的標(biāo)識(shí)符。標(biāo)識(shí)符的有效長(zhǎng)度取決于具體的C+編譯系統(tǒng)。標(biāo)識(shí)符應(yīng)體現(xiàn)“見(jiàn)名知義”原則,注重可讀性。關(guān)鍵字關(guān)鍵字又稱(chēng)保留字,是編程語(yǔ)言預(yù)定義的具有專(zhuān)門(mén)用途的標(biāo)識(shí)符,不允許用作用戶(hù)的標(biāo)識(shí)符。C+語(yǔ)言有48個(gè)標(biāo)準(zhǔn)關(guān)鍵字。注意:有的C+編譯系統(tǒng)支持的關(guān)鍵字不止這些。如VC+還有_int8、_int16、_int32、_int64、_inline等關(guān)鍵字。3.2 C+的基本數(shù)據(jù)類(lèi)型程序處理的對(duì)象是數(shù)據(jù),數(shù)據(jù)分為常量和變量。每個(gè)常量或變量都有數(shù)據(jù)類(lèi)型。C+的數(shù)據(jù)類(lèi)型分為兩大類(lèi):基

3、本數(shù)據(jù)類(lèi)型和非基本數(shù)據(jù)類(lèi)型?;緮?shù)據(jù)類(lèi)型是指C+內(nèi)部預(yù)先定義的類(lèi)型,包括整型、字符型、實(shí)型、邏輯型和空類(lèi)型;非基本數(shù)據(jù)類(lèi)型是用戶(hù)定義的類(lèi)型,包括數(shù)組、指針、結(jié)構(gòu)、聯(lián)合、枚舉和類(lèi)。 基本數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型用于描述程序中的數(shù)據(jù)。學(xué)習(xí)數(shù)據(jù)類(lèi)型,要掌握每種類(lèi)型占用的內(nèi)存字節(jié)數(shù)、取值范圍及所支持的操作。例如,基本數(shù)據(jù)類(lèi)型int,用于描述整數(shù),占用4字節(jié)內(nèi)存(在VC+中),取值范圍是-21474836482147483647,支持的操作包括加、減、乘、除等運(yùn)算?;緮?shù)據(jù)類(lèi)型見(jiàn)表3-1所示。字符類(lèi)型字符類(lèi)型用關(guān)鍵詞char表示,用于描述單個(gè)字符數(shù)據(jù)。字符采用ASCII編碼(見(jiàn)附錄)來(lái)表示,在存儲(chǔ)時(shí)占用一個(gè)字節(jié)

4、。由于ASCII編碼是正整數(shù)值且只使用了一個(gè)字節(jié)的低7位二進(jìn)制位,最高位為0,為了便于字符數(shù)據(jù)的處理,同時(shí)也為了一字節(jié)整型數(shù)據(jù)的表達(dá)和處理,C+允許把char型數(shù)據(jù)當(dāng)作整型數(shù)據(jù),因此,C+允許用signed和unsigned修飾char,即可以有signed char和unsigned char類(lèi)型。 整數(shù)類(lèi)型整數(shù)類(lèi)型(整型)用于描述整數(shù)?;诤侠碚加脙?nèi)存和提高數(shù)據(jù)處理速度的考慮,將整型分為:一字節(jié)整型:char,signed char,unsigned char。雙字節(jié)整型:short int,short,signed short,signed short int,unsigned shor

5、t,unsigned short int。四字節(jié)整型:int,signed int,unsigned int, unsigned,long int,long,signed long,signed long int,unsigned long,unsigned long int。整數(shù)類(lèi)型若表達(dá)的整數(shù)超出四字節(jié)整型的表示范圍,則:可用有些C+編譯系統(tǒng)提供了八字節(jié)整型,如VC+的_int64整型。如果所表達(dá)的整數(shù)對(duì)精度要求不高,則可選用float或double型替代。如果所表達(dá)的整數(shù)對(duì)精度要求特別高,則只好自編多字節(jié)整型數(shù)運(yùn)算的程序。整數(shù)類(lèi)型無(wú)符號(hào)整型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部用原碼表示,即它的二進(jìn)制數(shù)表示。

6、帶符號(hào)整型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部用補(bǔ)碼表示。正數(shù)的補(bǔ)碼形式就是它的原碼;負(fù)數(shù)的補(bǔ)碼形式由其相應(yīng)的正數(shù)的原碼的各位逐位求反后在最低位加1而得到。例如:若用雙字節(jié)整型,則1和-1的補(bǔ)碼分別是00001,1111111111111111。實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型(實(shí)型)又稱(chēng)浮點(diǎn)型,用于描述實(shí)數(shù)。基于合理占用內(nèi)存和提高數(shù)據(jù)處理速度的考慮,將實(shí)型分為單精度型(用float表示)和雙精度型(用double表示)。對(duì)于double型,還可用long修飾,使其成為long double型,以表示精度更高的實(shí)型數(shù)。在計(jì)算機(jī)內(nèi)部,實(shí)型數(shù)據(jù)用浮點(diǎn)形式(科學(xué)記數(shù)法)表示,即把數(shù)據(jù)表示成m2e,其中m稱(chēng)為尾數(shù),e稱(chēng)為階碼。實(shí)型數(shù)據(jù)在

7、計(jì)算機(jī)中存儲(chǔ)的是尾數(shù)和階碼兩部分。由于實(shí)型數(shù)據(jù)是不連續(xù)的,因此,無(wú)法精確表示每個(gè)實(shí)數(shù),只能用實(shí)型數(shù)據(jù)近似表達(dá)實(shí)數(shù)??罩悼罩敌停河胿oid表示。void類(lèi)型用于:描述函數(shù)沒(méi)有返回值(參見(jiàn)第6章)函數(shù)沒(méi)有參數(shù)(參見(jiàn)第6章)無(wú)類(lèi)型指針(參見(jiàn)10.8.3節(jié))常量常量:程序執(zhí)行過(guò)程中,其值不能被改變的量。常量分為:字面常量和標(biāo)識(shí)符常量。字面常量:在程序中不要任何說(shuō)明就可直接使用的常量。如,12,34.5。字面常量分為:整型常量、實(shí)型常量、字符型常量和字符串常量。標(biāo)識(shí)符常量:經(jīng)說(shuō)明或定義后才能使用的常量。整型常量整型常量可用十進(jìn)制、八進(jìn)制、十六進(jìn)制來(lái)表示。十進(jìn)制整數(shù):由09數(shù)字組成,除表示正負(fù)數(shù)的字符外,

8、第一個(gè)數(shù)字不能是0(整數(shù)0除外)。例如: +12,-25,0,1289 “+”號(hào)可以省略。八進(jìn)制整數(shù):由數(shù)字07數(shù)字組成,且以0開(kāi)頭。例如:012。十六進(jìn)制整數(shù):以0X(x)開(kāi)頭,由數(shù)字09和字母a(A)f(F)組成。例如: 0 x1abCD,0X02a5,0 xABCFD213整型常量整型常量可用后綴來(lái)修飾:以L或l后綴修飾的整數(shù)為長(zhǎng)整數(shù)。例如: 2L,023l,0X25678983L以U或u后綴修飾的整數(shù)為無(wú)符號(hào)整數(shù)。例如: 6U,045U,0XF91789U后綴U(u)和L(l)可以組合使用,表示無(wú)符號(hào)長(zhǎng)整型數(shù)。例如:0XFFFFFF96LU,120000UL若整型常量未明確指定為長(zhǎng)整型

9、或無(wú)符號(hào)整型,其類(lèi)型由編譯系統(tǒng)在編譯時(shí)依據(jù)它的取值自動(dòng)指定。實(shí)型常量實(shí)型常量(或稱(chēng)浮點(diǎn)常量),有兩種形式:十進(jìn)制數(shù)形式:由數(shù)字09和小數(shù)點(diǎn)組成。如: 0.1234,253.6,0.0,.205,-78.指數(shù)形式(科學(xué)表示法):以10的指數(shù)形式表示。如: 12.3E12,0.2333e-12 第一個(gè)數(shù)為12.31012,第二個(gè)數(shù)為0.233310-12。 注意,在E或e的前面必須有數(shù)字,且在E或e之后的指數(shù)部分必須是整數(shù)。例如:e10,E5,.e5,1.0e3.5 都是不合法的實(shí)數(shù)。實(shí)型常量浮點(diǎn)常量可用后綴來(lái)修飾:帶后綴f或F的浮點(diǎn)常量是單精度浮點(diǎn)數(shù)(float型)帶后綴d、D或無(wú)后綴的浮點(diǎn)常量

10、是雙精度浮點(diǎn)數(shù)(double型)帶后綴l、L結(jié)尾的浮點(diǎn)常量是長(zhǎng)雙精度浮點(diǎn)數(shù)(long double型)。帶后綴浮點(diǎn)常量舉例: 0.12f,12.3E12f,0.12D,0.12, 12.3E12,3.5L,12.3E12L 前兩個(gè)為單精度浮點(diǎn)數(shù),第三第五個(gè)為雙精度浮點(diǎn)數(shù),最后兩個(gè)是長(zhǎng)雙精度浮點(diǎn)數(shù)。 字符型常量字符型常量:用單引號(hào)括起來(lái)的單個(gè)字符。字符型常量在計(jì)算機(jī)內(nèi)是采用該字符的ASCII編碼值來(lái)表示的,其數(shù)據(jù)類(lèi)型為char型。合法的字符型常量舉例: a ,A, ,1 , ,&不合法的字符型常量舉例: , 原因是單引號(hào)已用作字符常量的定界符,反斜杠字符是轉(zhuǎn)義序列的開(kāi)始標(biāo)志。字符型常量對(duì)于無(wú)法直

11、接用單引號(hào)括起來(lái)表示的字符常量(主要是控制符),可用“轉(zhuǎn)義序列”表示。轉(zhuǎn)義序列:以轉(zhuǎn)義符“”開(kāi)始,后跟一個(gè)字符或一個(gè)整型常量來(lái)表示一個(gè)字符。若轉(zhuǎn)義符后跟一個(gè)整型常量,則必須是一個(gè)八進(jìn)制或十六進(jìn)制數(shù),其取值范圍為0255。八進(jìn)制數(shù)可以以0開(kāi)頭,也可以不以0開(kāi)頭;十六進(jìn)制數(shù)必須以X或x開(kāi)頭。例如: 032 x99 24 x56 0對(duì)于無(wú)法直接表示但又常用的字符常量,在C+中預(yù)定義了其轉(zhuǎn)義字符,如表3.2所示。字符串常量字符串常量:用雙引號(hào)括起來(lái)的若干個(gè)字符。其中的字符的表示方法與字符型常量相同。在存儲(chǔ)時(shí),每個(gè)字符串常量的尾部都自動(dòng)添加一個(gè)0,以表示字符串結(jié)束。0稱(chēng)為字符串的結(jié)束符。字符串常量舉例:

12、 a stutent 含轉(zhuǎn)義字符,占12字節(jié) a 占2字節(jié) 12 占3字節(jié) 空串,占1字節(jié) 結(jié)果為: 占9字節(jié)(一個(gè)漢字占2字節(jié))字符串常量a與a的區(qū)別:類(lèi)型上:前者是字符串常量,后者是字符型常量。存儲(chǔ)上:前者占兩個(gè)字節(jié),后者占一個(gè)字節(jié)。即: a 其存放值為0 x6100,占兩個(gè)字節(jié) a 其存放值為0 x61,占一個(gè)字節(jié)標(biāo)識(shí)符常量標(biāo)識(shí)符常量:有名字的常量。標(biāo)識(shí)符常量須先定義后使用。標(biāo)識(shí)符常量定義方法:用常量說(shuō)明符const。定義格式: const =;用編譯預(yù)處理命令。定義格式: #define 標(biāo)識(shí)符常量舉例: const double pi=3.1415926; #define PI 3.

13、1415926 #define NTU NanTong University標(biāo)識(shí)符常量使用標(biāo)識(shí)符常量?jī)?yōu)點(diǎn):提高程序的可讀性。若為標(biāo)識(shí)符常量取一個(gè)有意義的名字,將會(huì)提高它在程序中的可讀性。提高程序?qū)ΤA渴褂玫囊恢滦?。例如,使用圓周率時(shí),可能在一處寫(xiě)成3.14,而在另一處寫(xiě)成3.1415,導(dǎo)致運(yùn)算的精度不一致。增強(qiáng)程序的易維護(hù)性。若要調(diào)整程序中某個(gè)常量的值,對(duì)于字面常量來(lái)說(shuō),則要修改多處,還可能遺漏;對(duì)于標(biāo)識(shí)符常量來(lái)說(shuō),只需在定義處修改。變量變量:在程序執(zhí)行過(guò)程中其值可以被改變的量。變量三要素: 變量名 變量類(lèi)型 變量的值變量須先定義后使用。取變量的值稱(chēng)為對(duì)變量的引用。對(duì)變量賦值與引用統(tǒng)稱(chēng)為對(duì)變量

14、的操作或使用。變量的定義變量定義指明了變量的類(lèi)型和變量名。變量定義格式: ,變量名n; 類(lèi)型名是變量的數(shù)據(jù)類(lèi)型,可以是預(yù)定義數(shù)據(jù)類(lèi)型,也可以是用戶(hù)自定義數(shù)據(jù)類(lèi)型;變量名1、變量名2,變量名n為標(biāo)識(shí)符。舉例1: int n; 該語(yǔ)句定義(或稱(chēng)聲明)了一個(gè)名字為n的整型變量。當(dāng)程序執(zhí)行到這行代碼時(shí),將為變量n分配4字節(jié)存儲(chǔ)空間。變量的定義舉例2:一行可定義多個(gè)變量,變量間用逗號(hào)分隔。 int year,month,day; double x1,x2,x3; long sum,average,total;注意:變量定義是語(yǔ)句,因此變量定義可出現(xiàn)在程序中語(yǔ)句可出現(xiàn)的任何位置。但從程序可讀性方面考慮,變

15、量定義最好放在可執(zhí)行語(yǔ)句之前。同一變量只能做一次定義,即不能重復(fù)定義。變量名應(yīng)盡可能簡(jiǎn)短,并便于觀其名知其意。變量賦初值通常,在首次使用變量時(shí),變量應(yīng)有確定的值。變量的這個(gè)取值稱(chēng)為變量的初值。變量賦初值的方法:在定義變量時(shí),直接初始化。例如: int n=3; /n為整型,初值為3 float x=12.5f;/x為單精度實(shí)型,初值為12.5f char c=U; /c為字符型,初值為字符U int a,b,c=18; /可只對(duì)一部分變量賦初值 int i(2); /i為整型,初值為2 float y(1.5f);/y為float型,初值為1.5f變量賦初值在定義變量后,用賦值語(yǔ)句賦初值。例如

16、: float pi,y; pi=3.14159f; /使變量pi的取值為3.14159f y=2.71828f; /使變量y的取值為2.71828f 當(dāng)然,變量的初值不一定是常量,也可以是含有變量的相應(yīng)類(lèi)型的表達(dá)式。例如: int a=0,b=a+1;變量定義后,若未指定初值,則其初值取決于所分配的存儲(chǔ)器類(lèi)型,或用默認(rèn)值0或用隨機(jī)值初始化。3.3 運(yùn)算符與表達(dá)式運(yùn)算符(也稱(chēng)操作符):描述對(duì)數(shù)據(jù)的操作。操作數(shù):運(yùn)算符操作的數(shù)據(jù),可為常量和變量,也可為其他操作符的運(yùn)算結(jié)果。例如A+B,稱(chēng)A和B為操作數(shù),而把字符“+”稱(chēng)為加法運(yùn)算符。運(yùn)算符按功能分:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和

17、位運(yùn)算符等。運(yùn)算符按操作數(shù)的個(gè)數(shù)分:一元(目)運(yùn)算符、二元(目)運(yùn)算符和三元(目)運(yùn)算符。運(yùn)算符的優(yōu)先級(jí):運(yùn)算符的運(yùn)算優(yōu)先關(guān)系。運(yùn)算符的結(jié)合性若運(yùn)算符優(yōu)先級(jí)相同,則其運(yùn)算順序由運(yùn)算符的結(jié)合性確定。右結(jié)合:一個(gè)運(yùn)算符對(duì)其操作數(shù)按從左到右的順序執(zhí)行所規(guī)定的運(yùn)算。例如: 18-36 先取18,再取36,然后做減法運(yùn)算。左結(jié)合:一個(gè)運(yùn)算符對(duì)其操作數(shù)按從右到左的順序執(zhí)行所規(guī)定的運(yùn)算。例如: A-=3 先取3,再取變量A的值,兩者作減法運(yùn)算后,將結(jié)果賦給變量A。運(yùn)算符的目數(shù)一元(目)運(yùn)算符:一個(gè)運(yùn)算符只能對(duì)一個(gè)操作數(shù)進(jìn)行操作。例如,-5中的負(fù)號(hào)運(yùn)算符。二元(目)運(yùn)算符:一個(gè)運(yùn)算符要求兩個(gè)操作數(shù)。例如,5*

18、10中的運(yùn)算符“*”三元(目)運(yùn)算符:一個(gè)運(yùn)算符要求三個(gè)操作數(shù)。例如,條件運(yùn)算符“?:”是唯一的三元運(yùn)算符。同一運(yùn)算符因操作數(shù)的個(gè)數(shù)不同,完成不同運(yùn)算。例如,一元運(yùn)算符“*”用于取變量,二元運(yùn)算符“*”用于乘法運(yùn)算等。表達(dá)式表達(dá)式:由運(yùn)算符、園括號(hào)和操作數(shù)構(gòu)成的合法式子,經(jīng)過(guò)運(yùn)算應(yīng)有一個(gè)某種類(lèi)型的確定的值。操作數(shù)可以是常量、變量或函數(shù)等。使用不同的運(yùn)算符可以構(gòu)成不同類(lèi)型的表達(dá)式,如算術(shù)表達(dá)式、賦值表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式等。表達(dá)式書(shū)寫(xiě):操作數(shù)、運(yùn)算符、圓括號(hào)之間可以加空格,也可以不加空格。算術(shù)運(yùn)算符算術(shù)運(yùn)算符:-(負(fù)號(hào))、+(正號(hào))、+(加),-(減),*(乘),/(除),%(取余)。正

19、、負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)相同,左結(jié)合?!?”、“/”、“%”優(yōu)先級(jí)相同,右結(jié)合。加、減運(yùn)算符的優(yōu)先級(jí)相同,右結(jié)合。優(yōu)先級(jí)順序: 正、負(fù)號(hào) 高于 “*”、“/”、“%” 高于 加、減可用圓括號(hào)改變運(yùn)算符的優(yōu)先順序,先計(jì)算圓括號(hào)內(nèi)的值,再計(jì)算圓括號(hào)外的值。算術(shù)運(yùn)算符除法運(yùn)算符:若兩邊的操作數(shù)均為整數(shù)時(shí),則做整除運(yùn)算,即只取運(yùn)算結(jié)果的整數(shù)部分。例如: 3/4 結(jié)果為0 3.0/4 結(jié)果為0.75%(取余):計(jì)算兩個(gè)整型操作數(shù)相除的余數(shù)。所得余數(shù)的符號(hào)與左操作數(shù)相同。例如: 10%3 結(jié)果為1 -10%3 結(jié)果為-1 4%-3 結(jié)果為1算術(shù)運(yùn)算的溢出算術(shù)運(yùn)算的溢出:超出對(duì)應(yīng)類(lèi)型數(shù)據(jù)的表示范圍。除法運(yùn)算:若

20、除數(shù)為0或?qū)崝?shù)運(yùn)算的結(jié)果溢出,則系統(tǒng)認(rèn)為產(chǎn)生了一個(gè)嚴(yán)重錯(cuò)誤,將終止程序的執(zhí)行。整數(shù)的加、減或乘運(yùn)算:若結(jié)果產(chǎn)生溢出并不認(rèn)為是一個(gè)錯(cuò)誤,但結(jié)果已不正確。例如: int n=60000; coutn*nendl; 輸出結(jié)果為:-694967296,顯然是錯(cuò)誤的。此類(lèi)問(wèn)題可通過(guò)改變變量的類(lèi)型來(lái)解決。算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符、圓括號(hào)和操作數(shù)構(gòu)成的、符合C+語(yǔ)法規(guī)則的式子。算術(shù)表達(dá)式舉例。設(shè)有說(shuō)明:“int a=25,b=4,c=3;”,求下列表達(dá)式的值。a+b*c:因運(yùn)算符“*”的優(yōu)先級(jí)比“+”的高,故應(yīng)先做乘法運(yùn)算,再做加法運(yùn)算,表達(dá)式的值為37。a*-b:因負(fù)號(hào)運(yùn)算符“-”的優(yōu)先級(jí)比“*

21、”的高,并且“-”的結(jié)合性為左結(jié)合的,故先對(duì)b求負(fù)運(yùn)算,然后再作乘法運(yùn)算,表達(dá)式的值為-100。a*- -b:注意,兩個(gè)負(fù)號(hào)之間有空格,上述表達(dá)式等同于a*(-(-b),表達(dá)式的值為100。算術(shù)表達(dá)式使用算術(shù)表達(dá)式時(shí)應(yīng)注意:表達(dá)式應(yīng)簡(jiǎn)潔明了,沒(méi)有多余的運(yùn)算符。如上面的表達(dá)式a*- -b應(yīng)寫(xiě)成a*b。求值時(shí),表達(dá)式中的每個(gè)變量都應(yīng)有確定的值。C+的運(yùn)算符較多,其優(yōu)先級(jí)和結(jié)合性較復(fù)雜,在書(shū)寫(xiě)比較復(fù)雜的表達(dá)式而又忘記了運(yùn)算符的優(yōu)先級(jí)時(shí),可適當(dāng)增加配對(duì)的圓括號(hào),明確指定表達(dá)式的求值順序。+和運(yùn)算符+(增1)和-(減1)運(yùn)算符:一元運(yùn)算符,可放在變量的前面(前置),也可放在變量的后面(后置),用于快速實(shí)

22、現(xiàn)變量的增1和減1操作。變量的類(lèi)型可以是字符型、整型、實(shí)型、枚舉類(lèi)型和指針類(lèi)型。前置的+(或-)表示先將變量的值增1(或減1),再把變量的值參加運(yùn)算;后置的+(或-)表示先把變量的值參加運(yùn)算,然后再將變量的值增1(或減1)。+和運(yùn)算舉例設(shè)int a=1; float x=7,y;a+ /或+a,等價(jià)于a=a+1。a的值為2。 即“+”或“-”運(yùn)算符僅用于使某個(gè)變量的值增1或減1,前置和后置的作用是一樣的。y=x+ + +a 則y的值為9,x的值為8,a的值都為2。 即“+”或“-”與其他運(yùn)算符同時(shí)出現(xiàn)在表達(dá)式中時(shí),前置與后置的作用是不同的。+和運(yùn)算符使用說(shuō)明+和-運(yùn)算符只能用于變量。例如,a+

23、、(b=1)+等都是正確的,而19、(x+6)+都是錯(cuò)誤的。若出現(xiàn)多個(gè)“+”或“-”連寫(xiě)的情況,編譯器則將前兩個(gè)作為增1運(yùn)算符或減1運(yùn)算符。例如,“c=a+b;”等價(jià)于“c=a+ +b;”而不等價(jià)于“c=a+ +b;”。賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符:左結(jié)合的雙目運(yùn)算符,其優(yōu)先級(jí)比算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級(jí)低。賦值表達(dá)式: = 作用:將的值賦給。舉例。設(shè)a、b均為整型變量: a=3+5 將3+5的值8賦給a b=a=3+5 將3+5的值8賦給a,再將a賦給b a=5+b=5 錯(cuò):將5賦給5+b,而5+b不是變量 a=5+(b=5) b為5,a為10賦值運(yùn)算符使用注意不同編譯器

24、對(duì)賦值表達(dá)式的值的不同處理,可能使同一表達(dá)式在不同編譯器中的運(yùn)行結(jié)果不同。如: int x,s; s=(x=2)+(+x); 在VC+ 6.0中,s的值為6,而在Dev C+ 4.9中,s的值為5。而上述代碼寫(xiě)成: int x=2,s; s=x+(+x); 在VC+ 6.0和Dev C+ 4.9中,s的值均為6。解決方法:對(duì)表達(dá)式進(jìn)行分解。復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符:二元算術(shù)運(yùn)算符和位運(yùn)算符與賦值運(yùn)算符組合而成,優(yōu)先級(jí)和結(jié)合性與賦值運(yùn)算符相同。共有10個(gè): +=、-=、*=、/=、%=、=、&=、=、|=復(fù)合賦值表達(dá)式: 等價(jià)于: =()作用:簡(jiǎn)化書(shū)寫(xiě),提高表達(dá)式的目標(biāo)代碼質(zhì)量。舉例: a+

25、=b-5 等價(jià)于 a=a+(b-5) a*=b-c/2 等價(jià)于 a=a*(b-c/2)數(shù)據(jù)類(lèi)型轉(zhuǎn)換不同類(lèi)型的數(shù)據(jù)做混合運(yùn)算時(shí),應(yīng)先轉(zhuǎn)換成同一類(lèi)型,再做運(yùn)算。數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法:自動(dòng)類(lèi)型轉(zhuǎn)換(也稱(chēng)隱式類(lèi)型轉(zhuǎn)換):由系統(tǒng)按類(lèi)型轉(zhuǎn)換規(guī)則自動(dòng)完成。對(duì)于賦值與非賦值表達(dá)式來(lái)說(shuō),自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則是不同的。強(qiáng)制類(lèi)型轉(zhuǎn)換(也稱(chēng)顯式類(lèi)型轉(zhuǎn)換):由程序員在程序中用類(lèi)型轉(zhuǎn)換運(yùn)算符明確指明的轉(zhuǎn)換操作。通常,當(dāng)使用自動(dòng)類(lèi)型轉(zhuǎn)換不能滿(mǎn)足要求時(shí),才需要在程序中使用強(qiáng)制類(lèi)型轉(zhuǎn)換。非賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換轉(zhuǎn)換原則:先把精度低的操作數(shù)轉(zhuǎn)成與另一操作數(shù)相同精度的操作數(shù)后再做運(yùn)算。轉(zhuǎn)換規(guī)則:字符型或短整型數(shù)自動(dòng)轉(zhuǎn)成整型(in

26、t)數(shù)參與運(yùn)算。單精度實(shí)型數(shù)自動(dòng)轉(zhuǎn)成雙精度實(shí)型數(shù)參與運(yùn)算。其余情況,僅當(dāng)兩個(gè)操作數(shù)的類(lèi)型不同時(shí),才將表示范圍小的數(shù)據(jù)類(lèi)型轉(zhuǎn)成與另一操作數(shù)的相同類(lèi)型后再參與運(yùn)算。數(shù)據(jù)類(lèi)型表示的數(shù)據(jù)范圍由小到大為: intunsignedlongunsigned longdouble非賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換表達(dá)式計(jì)算舉例:3+2.5f:因兩個(gè)操作數(shù)的類(lèi)型不同,故要將它們轉(zhuǎn)成相同的double類(lèi)型后再運(yùn)算,其結(jié)果為5.5。a*2+2.5f 先計(jì)算a*2:將字符a轉(zhuǎn)換為整型數(shù)97與整型數(shù)2相乘,得整型數(shù)194; 再計(jì)算194+2.5f:將整型數(shù)194和float型數(shù)2.5f都轉(zhuǎn)成double型數(shù)后,做加法運(yùn)

27、算,結(jié)果為196.5。注意:自動(dòng)類(lèi)型轉(zhuǎn)換并不能保證運(yùn)算結(jié)果正確。例如-3+2u的結(jié)果并非-1,而是unsigned類(lèi)型的數(shù)據(jù)4294967295。賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換若賦值運(yùn)算符右邊表達(dá)式的數(shù)據(jù)類(lèi)型與其左邊變量的類(lèi)型不一致但兼容,則由系統(tǒng)自動(dòng)做類(lèi)型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則:將實(shí)型數(shù)賦給整型變量時(shí),僅取其整數(shù)部分賦給整型變量。若其整數(shù)部分的值超過(guò)整型變量的取值范圍,則賦值結(jié)果出錯(cuò)。將整型數(shù)賦給實(shí)型變量時(shí),將整型數(shù)轉(zhuǎn)成實(shí)型數(shù)后,再賦給實(shí)型變量。將double型數(shù)據(jù)賦給float型變量時(shí),要注意數(shù)值范圍,溢出時(shí)賦值就出錯(cuò)。賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換將字符型數(shù)據(jù)賦給整型變量時(shí),對(duì)于無(wú)符號(hào)字符類(lèi)

28、型數(shù)據(jù),低八位不變,高位補(bǔ)0后賦值;對(duì)于有符號(hào)字符類(lèi)型數(shù)據(jù),若其值為正,與無(wú)符號(hào)字符類(lèi)型的轉(zhuǎn)換規(guī)則相同;若其值為負(fù),則高位補(bǔ)1后再賦值。將無(wú)符號(hào)整型或長(zhǎng)整型數(shù)賦給整型變量時(shí),若在整型的取值范圍,則不會(huì)出錯(cuò);否則賦值結(jié)果出錯(cuò)。強(qiáng)制類(lèi)型轉(zhuǎn)換格式: () 或 () 先算表達(dá)式的值,然后將表達(dá)式的值的類(lèi)型強(qiáng)制轉(zhuǎn)換為由類(lèi)型名type規(guī)定的數(shù)據(jù)類(lèi)型。舉例:設(shè)int a=7,b=2; float x; 則 x=a/b x為3.0f x=(float)a/b x為3.5f x=float(a)/b x為3.5f x=(float)(a/b) x為3.0f x=float(a/b) x為3.0f強(qiáng)制類(lèi)型轉(zhuǎn)換在計(jì)

29、算表達(dá)式的值時(shí),對(duì)于系統(tǒng)能正確自動(dòng)轉(zhuǎn)換的數(shù)據(jù)類(lèi)型,則不必做強(qiáng)制類(lèi)型轉(zhuǎn)換。例如3+float(4*5.0)中,用float做強(qiáng)制類(lèi)型轉(zhuǎn)換就是多余的。如果不做強(qiáng)制類(lèi)型轉(zhuǎn)換會(huì)影響表達(dá)式求值的精度或不能完成相應(yīng)的運(yùn)算時(shí),才須使用強(qiáng)制類(lèi)型運(yùn)算。例如:(int)13.5%(int)3.5。因13.5和3.5都是實(shí)數(shù),而取余運(yùn)算符要求兩邊的操作數(shù)都是整型數(shù),這時(shí)當(dāng)然必須使用強(qiáng)制類(lèi)型運(yùn)算符。關(guān)系運(yùn)算符關(guān)系運(yùn)算符:二元運(yùn)算符,用來(lái)比較兩個(gè)操作數(shù)之間的關(guān)系。共有六個(gè): 、=、=、!= 其中前四個(gè)關(guān)系運(yùn)算符的優(yōu)先級(jí)相同,后兩個(gè)關(guān)系運(yùn)算符的優(yōu)先級(jí)相同,但前四個(gè)關(guān)系運(yùn)算符的優(yōu)先級(jí)高于后兩個(gè)。關(guān)系運(yùn)算符的優(yōu)先級(jí)比算術(shù)運(yùn)算

30、符低,但比賦值運(yùn)算符高。關(guān)系運(yùn)算符的操作數(shù)類(lèi)型可以是字符型、整型、實(shí)型、枚舉類(lèi)型以及指針類(lèi)型。注意:初學(xué)者常常誤將=當(dāng)作=使用。關(guān)系表達(dá)式關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將操作數(shù)連接起來(lái)的式子。關(guān)系表達(dá)式的值為整數(shù)0或1。關(guān)系成立時(shí),結(jié)果為1;否則,結(jié)果為0。例如,表達(dá)式(1=3)+2的值為3,因關(guān)系表達(dá)式1bc的含義并不是a大于b且b大于c,而是(ab)c,即先求出ab的值(為0或1),并使運(yùn)算的結(jié)果繼續(xù)參加后面的運(yùn)算。例如,關(guān)系表達(dá)式432的結(jié)果為0,因?yàn)樗葍r(jià)于(43)2。邏輯運(yùn)算符邏輯運(yùn)算符:用于邏輯運(yùn)算,用于復(fù)雜條件的表示。有三種: ! 邏輯非(單目運(yùn)算符) & 邏輯與(二目運(yùn)算符) | 邏

31、輯或(二目運(yùn)算符) 其中,邏輯非“!”優(yōu)先級(jí)最高,高于算術(shù)運(yùn)算符;邏輯與“&”的優(yōu)先級(jí)低于邏輯非,但高于邏輯或“|” 。在C+中,邏輯運(yùn)算的操作數(shù)不為0時(shí),為邏輯真;而操作數(shù)的值為0時(shí),為邏輯假。邏輯運(yùn)算符!(邏輯非):當(dāng)操作數(shù)的值為0時(shí),對(duì)該操作數(shù)做邏輯非運(yùn)算的結(jié)果為1;而當(dāng)操作數(shù)為非0時(shí),對(duì)其做邏輯非運(yùn)算的結(jié)果為0。例如:!0的值為1,!1.12的運(yùn)算結(jié)果為0。&(邏輯與):僅當(dāng)參加邏輯與的兩個(gè)操作數(shù)的值都為非0時(shí),其結(jié)果為1;否則結(jié)果為0。例如:0&1.2為0, 1&1.2為1。|(邏輯或):僅當(dāng)參加邏輯或的兩個(gè)操作數(shù)的值都為0時(shí),其結(jié)果為0;否則結(jié)果為1。例如:0|1.2為1, 0|0

32、為0。邏輯表達(dá)式邏輯表達(dá)式:用邏輯運(yùn)算符連接起來(lái)的式子。當(dāng)邏輯關(guān)系成立時(shí),其運(yùn)算結(jié)果為整數(shù)1;反之,為整數(shù)0。同樣,1或0可作為一個(gè)整數(shù)繼續(xù)參加運(yùn)算。邏輯表達(dá)式舉例:a=x&x=b 判斷x的值是否在區(qū)間a,b(a=b)&(b=c) 判斷a、b、c三個(gè)數(shù)是否相等xb|xa 判斷x小于b或者x小于ac9 判斷變量c不是數(shù)字字符邏輯表達(dá)式求值的優(yōu)化邏輯表達(dá)式求值的優(yōu)化:在邏輯表達(dá)式求值時(shí),一旦能確定其值,則不必再逐步求值。舉例。設(shè)int a=0,b=2,c=1;a&b+&-c 因a的值為0,則可直接確定整個(gè)表達(dá)式的值為0,此時(shí)不再對(duì)后續(xù)的邏輯與項(xiàng)做計(jì)算,即b和c的值并不會(huì)改變。a|b-|c+ a的值

33、為0,再與b做邏輯或運(yùn)算,此時(shí)結(jié)果為1,直接確定表達(dá)式的值為1,其后的運(yùn)算不再進(jìn)行。這樣,計(jì)算結(jié)果為1,a為0,b為1,c不變。逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:優(yōu)先級(jí)最低。逗號(hào)表達(dá)式: , 按從左到右的順序依次求出各表達(dá)式的值,并把最后一個(gè)表達(dá)式的值作為整個(gè)逗號(hào)表達(dá)式的值。舉例。設(shè)int a=2,b; 則表達(dá)式 a+=2,b=3+a 的值為7。此時(shí),a的值為4,b的值為7。條件運(yùn)算符與條件表達(dá)式條件運(yùn)算符:唯一的三目運(yùn)算符。條件表達(dá)式: ?:條件表達(dá)式的運(yùn)算過(guò)程:先求表達(dá)式1的值,若不為0,則求出表達(dá)式2的值(不求表達(dá)式3的值),并把該值作為運(yùn)算結(jié)果;否則求出表達(dá)式3的值(不求表達(dá)式2的值)

34、,并把它作為運(yùn)算結(jié)果。舉例:a=b?a:b 求a、b兩個(gè)數(shù)中的大數(shù)coutb?a大于bn:a小于等于bn);sizeof運(yùn)算符sizeof運(yùn)算符:?jiǎn)文窟\(yùn)算符,用于計(jì)算操作數(shù)類(lèi)型或表達(dá)式的值占用內(nèi)存的字節(jié)數(shù)。格式為: sizeof() 舉例: sizeof(int) /4(在32位系統(tǒng)中) sizeof(float) /4 sizeof(100) /1 sizeof(a+2.5)/8。因a+2.5的值為double型。 sizeof(“Hello”)/6。因Hello占6字節(jié)內(nèi)存。 sizeof(1+2) /4(在32位系統(tǒng)中) sizeof(1+2)/4(在32位系統(tǒng)中)位運(yùn)算符*位運(yùn)算符:對(duì)

35、其操作數(shù)按其計(jì)算機(jī)內(nèi)表示的二進(jìn)制數(shù)逐位地進(jìn)行邏輯運(yùn)算或移位運(yùn)算的運(yùn)算符。 4個(gè)邏輯位運(yùn)算符:、&、|、 2個(gè)移位運(yùn)算符:位運(yùn)算的操作數(shù):只能是字符型和整型數(shù)據(jù)。位運(yùn)算的用途:主要用于系統(tǒng)程序設(shè)計(jì)。邏輯位運(yùn)算*(按位取反):一元運(yùn)算符。它對(duì)其操作數(shù)的每個(gè)二進(jìn)位進(jìn)行“逐位取反操作”,即將1的位改為0,將0的位改為1。例如: 設(shè)字符型變量a為 00010110 則a的值為 11101001&(按位與):二元運(yùn)算符。它對(duì)其兩邊的操作數(shù)的對(duì)應(yīng)位按位進(jìn)行邏輯與運(yùn)算。例如: 設(shè)字符型變量a為 00001111 字符型變量b為 10101010 則a&b為 00001010邏輯位運(yùn)算*|(按位或):二元運(yùn)算符。將其兩邊的操作數(shù)的對(duì)應(yīng)位按位進(jìn)行邏輯或運(yùn)算。例如: 設(shè)字符型變量c為 0101011l 字符型變量d為 10100010 則c|d為 111101

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論