002-1C++研究生程序設計_第1頁
002-1C++研究生程序設計_第2頁
002-1C++研究生程序設計_第3頁
002-1C++研究生程序設計_第4頁
002-1C++研究生程序設計_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+程序設計第二章 C+編程基礎(一)8/10/202212.1 數(shù)據(jù)類型和表達式數(shù)據(jù)類型常量變量運算符和表達式8/10/202222.1.1 數(shù)據(jù)類型數(shù)據(jù)類型是指定義了一組數(shù)據(jù)以及定義在這一組數(shù)據(jù)的操作,它是程序中最基本的元素。 C+數(shù)據(jù)類型可分為基本類型、空類型、構造類型、指針類型、類類型五種。 8/10/20223數(shù)據(jù)類型基本類型空類型(無值類型)void構造類型類類型class指針類型整型int實型(浮點型)字符型邏輯型bool結(jié)構類型struct數(shù)組類型枚舉型類型enum聯(lián)合型類型union單精度型float雙精度型double單字符型char寬字符型w-char圖2.1-1 C+數(shù)

2、據(jù)類型8/10/202241、基本類型基本數(shù)據(jù)類型有4種:整型(int)、浮點型(float)、字符型(char)、邏輯型(bool)。整型數(shù)在計算機內(nèi)部一般采用定點表示法,用于存儲整型量。浮點數(shù)的小數(shù)點的位置不同,給出的精度也不相同。字符類型表示單個字符,一個字符用一個字節(jié)存儲。邏輯類型,也稱布爾類型,表示表達式真和假。8/10/202252、空類型空類型void用于顯式說明一個函數(shù)不返回任何值。還可以說明指向void類型的指針,說明以后,這個指針就可指向各種不同類型的數(shù)據(jù)對象。8/10/202263、構造類型構造類型又稱為組合類型,它是由基本類型按照某種規(guī)則組合而成的。數(shù)組:由相同數(shù)據(jù)類型

3、的元素組成的集合。結(jié)構體:由不同的數(shù)據(jù)類型構成的一種混合的數(shù)據(jù)結(jié)構。共用體:是類似于結(jié)構體的一種構造類型,但構成共用體的數(shù)據(jù)成員共用同一段內(nèi)存單元。枚舉:將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。 8/10/202274、指針類型指針類型變量用于存儲另一變量的地址,而不能用來存放基本類型的數(shù)據(jù)。它在內(nèi)存中占據(jù)一個存儲單元。8/10/202285、類類型類是體現(xiàn)面向?qū)ο蟪绦蛟O計的最基本特征,類是一個數(shù)據(jù)類型,它定義的是一種對象類型,由數(shù)據(jù)和方法組成。8/10/202292.1.2 常 量常量是指在程序運行過程中其值不能改變的量。C+支持5種類型的常量:浮點型、整型、字符型、布爾

4、型和枚舉型。常量具有類型屬性,類型決定了各種常量在內(nèi)存中占據(jù)存儲空間的大小。 8/10/2022101、整型常量整型數(shù)據(jù)表示通常意義上的整數(shù),整型常量可以用十進制、八進制或十六進制表示,占兩個字節(jié)。(1)十進制常量是一個帶正負號的常數(shù)(默認情況下為正數(shù)),如+3,-7等。(2)八進制常量由數(shù)字0開頭,其后由若干07的數(shù)字組成,如0378,0123等。(3)十六進制常量以0 x或0X開頭,其后由若干09的數(shù)字及AF(或小寫af)的字母組成,如0 x173,0 x3af。 8/10/202211長整型和無符號整數(shù):整型常量可以后跟字母l或L表示long型(長整數(shù)),也可以跟u或U表示unsigne

5、d整數(shù)(無符號整數(shù)),如以下數(shù)是合法的:375u/無符號整數(shù)12345UL/無符號長整數(shù)54321L/長整數(shù) 13579ul/無符號長整數(shù)8/10/2022122、浮點數(shù)常量浮點數(shù)也稱為實型數(shù)。只能以十進制形式表示。 有兩種形式。(1)小數(shù)表示法使用這種表示形式時,實型常量分為整數(shù)部分和小數(shù)部分。其中的一部分可在實際使用時省略,如10.2,.2,2.等。但整數(shù)和小數(shù)部分不能同時省略。(2)指數(shù)表示法也稱科學記數(shù)法,指數(shù)部分以E或e開始,而且必須是整數(shù)。如果浮點數(shù)采用指數(shù)表示法,則E或e的兩邊都至少要有一位數(shù)。如以下數(shù)是合法的:1.2e20,-3.4e-2。 8/10/2022133、字符常量和

6、字符串常量(1)字符常量C+中的字符常量通常是用單引號括起的一個字符。在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,如字符a的ASCII碼為97。字符常量包括兩類,一類是可顯示字符,如字母、數(shù)字和一些符號 、+等,另一類是不可顯示字符常量,如ASCII碼為13的字符表示回車。(2)轉(zhuǎn)義字符轉(zhuǎn)義字符是特殊的字符常量,表示時一般以轉(zhuǎn)義字符開始,后跟不同的字符表示不同的特殊字符。 8/10/202214名稱符號空字符(null)0換行(newline)n換頁(formfeed)f回車(carriage return)r退格(backspace)b響鈴(bell)a水平制表(horizontal tab)t垂

7、直制表(vertical tab)v反斜線(backslash)問號(question mark)?單引號(single quote)雙引號(double quote)”表1 常用的特殊字符 8/10/202215(3)字符串常量字符串常量是由一對雙引號括起來的零個或多個字符序列。字符串可以寫在多行上,不過在這種情況下必須用反斜線表示下一行字符是這一行字符的延續(xù)。字符串常量實際上是一個字符數(shù)組,組成數(shù)組的字符除顯式給出的外,還包括字符結(jié)尾處標識字符串結(jié)束的符號0,所以字符串“abc”實際上包含4個字符:a、b、c和0。a和“a”的區(qū)別:a是一個字符常量,在內(nèi)存中占一個字節(jié)的存儲單元,“a”是一

8、個字符串常量,在內(nèi)存中占兩個字節(jié),除了存儲a以外,還要存儲字符串結(jié)尾符0。 8/10/2022164、布爾常量布爾常量僅有兩個:false(假)和true(真)。8/10/2022175、枚舉常量枚舉常量可以通過建立枚舉類型來定義。枚舉類型是一種用戶自定義數(shù)據(jù)類型。在聲明枚舉類型時,需要把常量的值一一列舉出來,形式如下:enum 枚舉類型名 常量值1 ,常量值2 ,常量值n;例如聲明一個名為color的枚舉類型: enum colorRed,Green,Blue,White,Black;枚舉常量是一種符號常量。Red,Green等是符號常量,它們表示各個枚舉值,在內(nèi)存中表示以整型數(shù)。如果沒有專

9、門指定,第一個符號常量的枚舉值就是0,其他枚舉值依次為1,2,3。所以,C+自動給Red賦0,Green賦1,等等。 8/10/2022186、符號常量在C+中的常量常用符號常量來表示,即用一個與常量相關的標識符來代替常量出現(xiàn)在程序中,這種相關的標識符稱為符號常量。例如用pi表示圓周率3.1415926,在程序用用到圓周率時就用pi代替。符號常量定義方法如下: const 類型符號常量=表達式;如:const float pi=3.1415926;注意:常量標識符在程序中只能被引用,而不能被重新賦值。即不能出現(xiàn)在表達式的左邊。8/10/2022192.1.3 變量變量是在程序執(zhí)行中其值是可以變

10、化的量。變量有三個要素:名字、類型和值。8/10/2022201、變量名命名變量名的命名要遵守以下規(guī)則:不能是C+保留字。C+的保留字如表2所列。第一個字符必須是字母或下劃線,中間不能有空格。變量名除了使用26個英文大小寫字母和數(shù)字外,只能使用下劃線。c+變量名的長度一般不要超過31個字符。變量名不要與C+中的庫函數(shù)名、類名和對象名相同。例如,下列變量名是合法的變量名:a123 c3b file_1 8/10/202221asm auto break case catch char class const continuedefault delete dodoubleelseenumexter

11、nfloatforfriendgotoifinlineintlongnewoperatoroverloadprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchthistemplatethrowtrytypedefunionunsignedvirtualvoidvolatilewhile表2 C+的標準保留字 8/10/2022222、變量的類型變量在使用前必須先定義,指出其數(shù)據(jù)類型。通過類型定義,變量被分配固定的存儲空間,直到程序結(jié)束時存儲空間被釋放。8/10/2022233、變量的值與變量有關的有兩個值

12、:一個是變量所表示的數(shù)據(jù)值,另一個是變量的地址值。例如: char c; c=a;其中,第一個語句是定義一個變量,其名字為c,其類型為字符型。第二個語句是給變量c賦值,使變量所表示的數(shù)據(jù)值為a,該值便是存放在變量c的內(nèi)存地址中的值,實際上內(nèi)存中存放的是字符a的ASCII碼值,以整數(shù)表示,所以c+中整型數(shù)據(jù)和字符型數(shù)據(jù)之間可以相互賦值,但要注意其表示的合理范圍。例如:下面賦值操作是正確的。int a=x;char ch=41;變量c被定義以后,它就在內(nèi)存中對應著一個內(nèi)存地址值,在c+中許多操作是針對變量的地址進行的,在指針類型一章將詳細介紹。8/10/202224例2.1-1#include “

13、iostream.h”void main( ) int a; char ch; for (ch=a ;ch=z;ch+) a=ch; couta,; 程序輸出什么結(jié)果?8/10/2022254、變量的定義在c+中,任何一個變量在被引用之前必須被定義。c+中變量可以在程序中隨時定義,不必集中在程序之前。定義格式: 類型變量名表;當有多個變量時,其間用逗號隔開。例如: int i,j,k; float x,y,z; char c1,c2,c3;注意:在同一個內(nèi)存塊中不允許重復定義一個變量。8/10/2022265、變量的初始化變量初始化一般采用兩種方式。第一種方式是在定義變量時可以給變量賦一個初值

14、,例如:int a=3;float b1,b2=3.4,b3=5.6;const int c=5;第二種方式是先定義變量,然后通過賦值語句使變量初始化,例如:int a;a=3;8/10/2022272.1.4 運算符與表達式表達式是由運算符和運算數(shù)組成。運算符是表示進行某種運算的符號。運算數(shù)包含常量、變量和函數(shù)等。運算符按其連接運算對象的個數(shù)可分為:單目運算(一元運算符,只需一個操作數(shù))雙目運算(二元運算符,需兩個操作數(shù))三目運算(三元運算符,需三個操作數(shù)) 8/10/202228按其在表達式中所起的作用又可分為:算術運算符 + - * / %關系運算符 = = !=邏輯運算符 ! & |位

15、運算符 | &自增自減運算符 + -賦值運算符 = 及其擴展(+= -= *= /= %= 等)條件運算符 ? :指針運算符 * 和 &逗號運算符 ,分量運算符 . -函數(shù)調(diào)用運算符()下標運算符求字節(jié)運算符 sizeof強制類型轉(zhuǎn)換運算符:(type) 8/10/2022291、算術運算符(1)普通運算符 單目運算符:(取負),(取正)單目運算符比雙目運算符優(yōu)先級高。 雙目運算符:、(取余)在這五個運算符中,和的優(yōu)先級比,-要高。另外,只適用于int型。/運算符對于實型做除法運算,結(jié)果為小數(shù);對于整型做除法運算,結(jié)果為整數(shù)。8/10/202230例2.1-2:int a,b=39;a=b/2

16、;結(jié)果a等于19。double x;int c=37;x=c/4.0;結(jié)果為9.25 8/10/202231(2)自增、自減運算符+:自增運算符,表示加。-: 自減運算符,表示減。這兩個運算符都是單目運算符,且功能相近,要替代下列代碼: i=i+1;可使用 +i 或 i+;前一種方式稱為前綴方式,后一種稱為后綴方式,其目的都是使i加1。二者的區(qū)別是:前綴是先將操作數(shù)增1(或減1),然后取操作數(shù)的新值參與表達式的運算。后綴是先將操作數(shù)增1(或減1)之前的值參與表達式的運算,到表達式的值被引用之后再做加1(或減1)運算。8/10/202232例如:int x=0,y;y=x+ + x+;運算結(jié)果:

17、y=0,x=28/10/202233注意: 自增、自減運算符有四種應用格式:int a=3;b=a+; 等價于 b=a;a=a+1;int a=3;b=a-; 等價于 b=a;a=a-1;(運算符后置用法,代表先使用變量,然后對變量增值)int a=3;b=+a; 等價于 a=a+1;b=a;int a=3;b=-a; 等價于 a=a-1;b=a;(運算符前置用法,代表先對變量增值,再使用變量)8/10/202234注意: C+編譯器在處理時盡可能多的自左向右將運算符結(jié)合在一起。例如:a+b表示為(a+)+b而不是a+(+b)。在調(diào)用函數(shù)時,實參的求值順序一般為自右向左。例如:int a=1;

18、couta+a+,=,c 等價于(a+b)ca!=bc 等價于a!=(bc) 由關系運算符組成的關系表達式的值是邏輯型的,即bool 型。在C+中常常將邏輯真用非0表示(一般為1),邏輯假用0表示。8/10/2022363、邏輯運算符&(邏輯與), |(邏輯或),!(邏輯非)邏輯表達式的結(jié)果為真則為1,結(jié)果為假則為0。邏輯非(?。┦菃文窟\算符,邏輯與(&)與邏輯或(|)為雙目運算符。邏輯非的優(yōu)先級最高,邏輯與次之,邏輯或最低。邏輯運算真值表如表3所示。8/10/202237表3 邏輯運算真值表aba&ba|b!a!b0000110非00110非000101非0非011008/10/202238

19、4、賦值運算符(1)賦值運算符“=”的一般格式為:變量=表達式;表示將其右側(cè)的表達式求出結(jié)果,賦給其左側(cè)的變量。例如:int i;i=3*(4+5); /i的值變?yōu)?7(2)賦值表達式本身的運算結(jié)果是右側(cè)表達式的值,而結(jié)果類型是左側(cè)變量的數(shù)據(jù)類型。例如:int i=1.2*3; /結(jié)果為3,而不是3.6 8/10/2022394、賦值運算符(3)賦值運算符的結(jié)合性是從右至左的,因此,C+程序中可以出現(xiàn)連續(xù)賦值的情況。例如,下面的賦值是合法的:int i,j,k;i=j=k=10; /i,j,k都賦值為10(4)復合運算符:+=(加賦值),-=(減賦值),*=(乘賦值),/=(除賦值),%=(求

20、余賦值),=(右移位賦值),&=(按位與賦值),=(按位異或賦值), |=(按位或賦值) 8/10/202240它們的含義如下:a+=b等價于 a=a+ba-=b 等價于 a=a-ba*=b 等價于 a=a*ba/=b 等價于 a=a/ba%=b 等價于 a=a%ba=b 等價于 a=a=b 等價于 a=ab a&=b 等價于 a=a&ba=b 等價于 a=aba|=b 等價于 a=a|b 8/10/202241例:int a=12;a+=a;表示a=(a+a)=(12+12)=24; int a=12;a+=a-=a*=a;表示a=a*a /a=12*12=144a=a-a /a=144-1

21、44=0a=a+a /a=0+0=08/10/2022425、條件運算符(1)條件運算符“? :”是C+中惟一三目運算符,其形式為:表達式1 ?表達式2 :表達式3它的運算方式為:先計算表達式1的值,如果其值為非0(真),則表達式2的值就是整個表達式的最終結(jié)果;否則表達式3的值就是整個表達式的值。常見的一個例子為:max=(ab)?a:b)上面例子定義了一個求兩個數(shù)a和b中最大值,其中決定哪一個是最大值用了條件運算符。8/10/202243(2)條件運算符的結(jié)合性是自右向左。例如有以下條件表達式:ab?a:cd?c:d相當于ab?a:(cd?c:d)(3)條件運算符的優(yōu)先級別高于賦值運算符,低

22、于關系運算符和算術運算符。例如有:ab?a-b:b-a相當于(ab)?(a-b):(b-a) 8/10/2022446、逗號運算符逗號運算符是將多個表達式組成一個表達式。例如: d1,d2,d3,d4這里d1、d2、d3、d4都是一個表達式。整個表達式的值由最后一個表達式的值決定。計算順序是從左至右依次計算各個表達式的值,最后計算的表達式的值和類型便是整個表達式的值和類型。8/10/202245例如:int a=1,b,c;a=(b=a+1,c=b+2,a=c+1)+a;結(jié)果是:a=10,b=2,c=4。 for (min=0,max=length-1;minmax;min+,max-) 這里

23、循環(huán)初始,min=0,max=length-1;循環(huán)條件是minmax;每循環(huán)一次,min加1,max減1。逗號運算符的用途僅在于解決只能出現(xiàn)一個表達式的地方卻要出現(xiàn)多個表達式的問題。8/10/2022467、位運算符(1)位(bit)是計算機中表示信息的最小單位,一般用0和1表示。一個字符在計算機中用8個位表示,8個位組成一個字節(jié)。C+語言需要將人們通常所習慣的十進制數(shù)表示為二進制、八進制或十六進制數(shù)來理解對位的操作。C+中所有的位運算符如下:(按位求反), (右移),&(按位與),(按位異或), |(按位或)。(2)位運算符是對其操作數(shù)按其二進制形式逐位進行運算,參加位運算的操作數(shù)必須為整

24、數(shù)。8/10/2022478、sizeof運算符(求字節(jié)運算符)(1)sizeof運算符是單目運算符,用于計算運算對象在內(nèi)存中所占字節(jié)的多少,它有兩種形式:sizeof (類型標識符);sizeof 表達式;(2)sizeof可以接受的類型標識符很多,如sizeof(int)表示求整型數(shù)據(jù)在內(nèi)存中所占字節(jié)數(shù)。 例如:int a,則sizeof(a)表示求變量a在內(nèi)存中所占字節(jié)數(shù)。例如:int a10,則sizeof(a)表示求數(shù)組a在內(nèi)存中所占字節(jié)數(shù)。 8/10/2022489、運算符的優(yōu)先級和結(jié)合性(1)優(yōu)先級每種運算符都有一個優(yōu)先級,優(yōu)先級是用來標志運算符在表達式中的運算順序的。優(yōu)先級高的

25、先做運算,優(yōu)先級低的后做運算,優(yōu)先級相同的由結(jié)合性決定計算順序。(高)!,算術運算符,關系運算符,位運算符,&、|,條件運算符,賦值運算符,逗號運算符(低)詳細說明(2)結(jié)合性大多數(shù)運算符都是按從左到右計算,只有三類運算符的結(jié)合性是從右到左。他們是:單目、三目和賦值。8/10/20224910、表達式表達式由運算符、運算數(shù)和括號組成。最簡單的表達式只有一個常量或變量復雜表達式:有兩個或多個運算符,運算符執(zhí)行的先后順序由它們的優(yōu)先級和結(jié)合性決定。執(zhí)行表達式得到的結(jié)果值便是表達式的值。C+中常用的表達式有6種。 8/10/202250例子:已知int a;算術表達式。例如,a+5.2/3.0-9%

26、5關系表達式。例如,m=x邏輯表達式。例如,!a & 8 | 7條件表達式。例如,a4 ? +a:-a賦值表達式。例如,a=7逗號表達式。例如,a+5,a=7,a+=48/10/202251書寫表達式的注意事項: 在表達式中,連續(xù)出現(xiàn)兩個運算符時,最好用空格符分隔。如: a+b; 系統(tǒng)將默認為是a+ +b,因系統(tǒng)將按盡量取大的原則來分割多個運算符。如果想執(zhí)行a加+b,則應寫成: a+ +b; 在寫表達式中,有時記不清楚運算符的優(yōu)先級時,可使用括號來確定運算符組合。8/10/202252(1)算術表達式算術表達式是由算術運算符和位操作運算符組成的表達式,其表達式的值是一個數(shù)值。表達式的類型具體地

27、由運算符和操作數(shù)決定。8/10/202253例2.1-3 #include void main( )int a,b, m=3,n=4;a=7*2+-3%5-4/3; /-3%5=-3,4/3=1b=m+ - -n;coutatbtmtnendl;執(zhí)行結(jié)果如下: 10 0 4 38/10/202254(2)關系表達式 由關系運算符組成的表達式為關系表達式。關系表達式的運算結(jié)果為邏輯型,常用在條件語句和循環(huán)語句中。8/10/202255例2.1-4#include void main( ) char x=m,y=n; int n; n=xy; cout nendl; n=x=y-1; coutne

28、ndl; n=(y!=Y)+(53)+(y-x=1); cout nb? x=4:x=9; 條件表達式的值取決于?前面的表達式的值,該表達式的值為非0時,整個表達式的值為:前面的表達式的值,否則為:后面的表達式的值。8/10/202259例2.1-5 #include void main( ) int a=3,b=4,c; c=ab? +a:+b; couta,b,cendl; c=a-b?a-3?b:b-a:a; couta,b,cendl;該程序執(zhí)行的結(jié)果為:3553528/10/202260(5)賦值表達式 由賦值運算符組成的表達式為賦值表達式。賦值運算符除了“=”之外還有十個復合運算符,這是賦值和運算相結(jié)合的運算符。賦值運算符的結(jié)合性是由

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論