C++程序設(shè)計:第2章 C++基本概念_第1頁
C++程序設(shè)計:第2章 C++基本概念_第2頁
C++程序設(shè)計:第2章 C++基本概念_第3頁
C++程序設(shè)計:第2章 C++基本概念_第4頁
C++程序設(shè)計:第2章 C++基本概念_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章,C+基本概念,本章需要掌握的內(nèi)容,C+的基本詞法結(jié)構(gòu),包括關(guān)鍵字、標識符和標點符號 基本的數(shù)據(jù)類型 變量與引用 整型常量的不同進制表示方法 實型常量的不同表示方法 字符常量、轉(zhuǎn)義字符與字符串常量 標識符常量與宏定義常量 各種運算符的作用與優(yōu)先級 類型轉(zhuǎn)換,包括:自動類型轉(zhuǎn)換、強制類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換 C+語句 簡單的輸入與輸出,2.2 第一個C+源程序,include void main() couthello,worldn; /向屏幕輸出 hello,world后換行,包含頭文件,主函數(shù)的函數(shù)頭,函數(shù)后跟的一對,C+輸出語句,注釋語句,2.3.1 關(guān) 鍵 字,關(guān)鍵字(Keyword

2、)又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用,C+大小寫敏感(區(qū)分大小寫),關(guān)鍵字全部由小寫字母組成。標準C+(ISO14882)定義了74個關(guān)鍵字,具體的C+編譯器還會做一些增刪。常用關(guān)鍵字及分類見下表,關(guān) 鍵 字,表2-1 C+常用關(guān)鍵字及分類,2.3.2 標識符,標識符(Identifier,ID )是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名,合法標識符由字母或下劃線開始,由字母、數(shù)字、下劃線組成,且不能和關(guān)鍵詞同名。其有效長度各個C+編譯系統(tǒng)有自己的規(guī)定,VC+允許標識符長度為1247個字符,建議使用有一定含義的英文單詞或拼音序列作標識符,

3、以提高可讀性;另外盡量不用下劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵字沖突,標識符,例: 判斷下面哪些是合法的標識符,MyFile,Salary 94,amount,void,94Salary,_94Salary,amount,f3.5,Num_of_Student,2.3.3 標點符號,標點符號包括 #、( )、 ,、 :、 ;、 、 等,標點符號的作用,有一定的語法意義。如字符和字符串常量分別用 和 引起來,對語法符號起分隔作用。如;等,2.3.4 分隔符,編寫C+程序時,每個詞法單位必須使用分隔符將它們分隔開。可用作C+分隔符的有:運算符、標點符號、空格符、Tab符、回車符,2.4 數(shù)據(jù)

4、類型,計算機處理的對象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式轉(zhuǎn)換成二進制碼存放在內(nèi)存中的。 例如,整數(shù)在內(nèi)存中采用原碼或補碼表示、實數(shù)采用浮點數(shù)表示方式。對于整數(shù)10和實數(shù)10.0在內(nèi)存中的數(shù)據(jù)是不一樣的。即使同樣表示整數(shù),對于(FFFFFFFF)16若表示為有符號的整數(shù)則為-1,若表示為無符號的整數(shù)則為232-1,2.2 C+中的數(shù)據(jù)類型,C+的數(shù)據(jù)類型,基本數(shù)據(jù)類型,非基本數(shù)據(jù)類型,數(shù)組 type 指針 type * 結(jié)構(gòu) struct 聯(lián)合 union 枚舉 enum 類 class,整 型 int,字符型 char,邏輯型 bool,無值型 void,實 型 float 雙精度型 doubl

5、e,實 型,整型用來存放整數(shù).有符號的整數(shù)在內(nèi)存中存放的是它的補碼,無符號數(shù)沒有符號位,存放的就是原碼 。整數(shù)占用的字節(jié)數(shù)與機型有關(guān),32位機上占用4個字節(jié)。 字符型用來保存字符,存儲的是該字符的ASCII碼,占用一個字節(jié)。如大寫字母A的ASCII碼為65,在對應(yīng)的一個字節(jié)中存放的就是65。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個8位二進制整數(shù),實型和雙精度型都用來存放實數(shù),兩者表示的實數(shù)精度不同。 實數(shù)在內(nèi)存中以浮點數(shù)形式存放。 無值型主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。 基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、unsigned(無符號)、lon

6、g(長)、short(短)。參見下表,VC+的基本數(shù)據(jù)類型,2.5 變 量,變量,在程序中是指可以改變值的量; 變量必須用標識符進行標識,稱為變量名; 變量有類型之分,如整形變量、字符變量等; 任何變量都必須先說明后使用;一是便于編譯程序為變量分配空間,二是便于編譯時進行語法檢查,例如: int i, j, k; float x, y, z; char c1, c2; double dx,2.5.1 變量說明,在C+中,變量說明的一般格式為: 存儲類型數(shù)據(jù)類型 變量名1,變量名2, ,變量名n,三個實型變量x, y, z,二個字符型變量c1,c2,一個雙精度型變量dx,三個整型變量i,j,k,

7、2.5.1變量賦初值,給變量賦初值稱為初始化,有兩種方法: (1)變量說明時直接賦初值。 例如:int a=3, b=4, c=5; float x=3.0; (2)用賦值語句賦初值。 例如:float x, e; x=3.5; e=2.71828,2.6 常量,1. 整型常量,4. 字符串常量,3. 字符型常量,2. 實型常量,常量,指程序中直接給出的量; 常量的值在程序執(zhí)行過程中保持不變; 根據(jù)取值和表示方法的不同,可分為以下幾種,2.6.1 整型常量,十進制表示法,八進制表示法,十六進制表示法,其他表示法,整數(shù)有多種表示方法,整數(shù)的十進制表示方法,十進制表示與我們熟悉的書寫方式相同。 如

8、 15 -24,整數(shù)的八進制表示,八進制表示以0開始,由數(shù)字07組成,用來表示一個八進制數(shù)。 如: 012 /八進制數(shù)12,即十進制數(shù)10 -0655/八進制數(shù)-655,即十進制數(shù)-429,整數(shù)的十六進制表示,十六進制以0X(大小寫均可)開始,由數(shù)字09和字母AF(大小寫均可)組成,用來表示一個十六進制數(shù)。 例如: 0 x32A /十六進制數(shù)32A,即十進制數(shù)810 -0 x2fe0 /十六進制數(shù)-2fe0,/即十進制數(shù)-12256,整數(shù)的其他表示方法,整型常量還可以表示長整數(shù)和無符號整數(shù)。長整型常數(shù)以 L 或 l 結(jié)尾,無符號常整數(shù)以 U 或 u 結(jié)尾,以 U L 或 L U(大小寫均可)結(jié)

9、尾則可表示無符號長整型常數(shù)。 例如: -84L/十進制長整數(shù)-84 026U/八進制表示的無符號整數(shù)26 0X32LU /十六進制表示的無符號長整型數(shù)32,2.6.2 實型常量,1)一般形式與平時書寫形式相同,由數(shù)字 09和小數(shù)點組成。它一般由整數(shù)部分和小數(shù)部分組成,可以省略其中之一(如78.或.06,.0),但不能二者皆省略。例如: 0.23 -125.76 0.0 .46 -35. C+編譯系統(tǒng)把用這種形式表示的實型數(shù)一律按雙精度常量處理,在內(nèi)存中占8個字節(jié)。如果在實數(shù)的數(shù)字之后加字母F或f,表示此數(shù)為單精度浮點數(shù),如1234F,-43f,占4個字節(jié),包含小數(shù)點和10的冪的數(shù)為實型常量,有

10、兩種表示方法,2) 指數(shù)形式(也稱為科學表示法)表示為尾數(shù)乘以10的次方形式,由尾數(shù)、E或e和階數(shù)組成。指數(shù)形式要求在E或e前面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù),例 : 判斷下列表示是否合法,123E12,.34e-2,E4,1.43E3.5,2.6.3 字符型常量,字符常量是用單引號引起來的單個字符。在內(nèi)存中保存的是字符的ASCII碼值。在所有字符中,有些是可顯示字符,通常就用單引號引起來表示: a /字符a /字符 4/字符4 /空格字符,注意,e和E是不同的字符常量,它們代表不同的ASCII碼值。 4和整型數(shù)4是不同的值, 4的ASCII碼值為52。 0和0是兩個不同的字符

11、。 0的ASCII碼值為48。而0的ASCII碼值為0,詳見轉(zhuǎn)義字符,2.6.4 轉(zhuǎn)義字符,轉(zhuǎn)義序列就是用轉(zhuǎn)義符“”開始,后跟一個字符或一個整型常量(字符的ASCII碼值)的方法來表示一個字符。若轉(zhuǎn)義符后邊是一個整型常量,則必須是一個八進制或以x為前綴的十六進制數(shù),其大小在0255之間。當轉(zhuǎn)義符后跟八進制數(shù)時,前綴0可以省略。如021、x78、0、56等都是合法的字符型常量。 轉(zhuǎn)義符后面的字符必須小寫,大寫只能表示其自身。如果轉(zhuǎn)義字符后面是大寫字母,則忽略反斜杠,作為一個一般的符號處理,即標識大寫字母自身。例如:E,則認為就是E,2.6.5 字符串常量,字符串常量與字符型常量的區(qū)別,字符串常量

12、a 占兩個字節(jié),存放a和0,值為0 x6100,字符型常量a 占一個字節(jié),存放a,值為0 x61,用雙引號引起來的若干個字符稱為字符串常量。 例如:I am a Chinese.,123, a ,2.6.6 常變量及常量說明符const,用常量說明符const給常量起個名字(標識符),這個標識符就稱為標識符常量,也叫常變量; 例如: const float PI=3.14159; const int Number_of_Student=100,常變量使用的注意事項: 常變量必須也只能在說明時進行初始化; 常變量初始化之后,不允許再被賦值; 常變量必須先說明后使用; 常變量存儲在數(shù)據(jù)區(qū),并且可以

13、按地址訪問,編譯時系統(tǒng)對常變量進行類型檢查。 C+建議使用常變量,而不要使用直接常量,2.6.7 宏定義常量,C+中可以用預(yù)編譯指令#define 命令將一個指定的標識符(即宏名)來代表源程序中的一個字符串。它的一般形式為 # define 標識符 字符串 如: # define PI 3.1415926,2.7.1 運算符與表達式,C+的運算符按功能大致可分為算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和其他運算符。C+的某些運算符與數(shù)學的運算符書寫方式相同,功能也相近,但某些運算符與數(shù)學的運算符書寫方式雖相同,功能卻有所區(qū)別 。 C+的運算符按操作個數(shù)可分為單目(一元)運算符、雙目(二元)

14、運算符、三目(三元)運算符,2.7.1 運算符優(yōu)先級,C+規(guī)定了運算符優(yōu)先級和結(jié)合性,詳見表2-5。 C+的運算符眾多,優(yōu)先級存在一定的規(guī)律性: 單目運算符優(yōu)先級高,; 算術(shù)運算符優(yōu)先級高,關(guān)系運算符次之,邏輯運算符低,賦值運算符優(yōu)先級更低; 最高優(yōu)先級為括號和成員運算符,最低運算符為逗號運算符。 C+運算符的結(jié)合性也無須死記硬背,一般而言,其結(jié)合性和人們的思維習慣相同,2.7.2 算術(shù)運算符,一元算術(shù)運算符有: + 正數(shù)運算符,一般可省略,例如+3,+9。 - 負數(shù)運算符,例如-10,-100。 二元算術(shù)運算符有: + 加法運算符,例如 a+b,3+12,a+55。 - 減法運算符,例如 a

15、-b,34-c,d-100。 * 乘法運算符,例如 a*b,11*c,f*10。 除法運算符,例如 a/b,100/4,30.0/4.0。 % 求模(求余)運算符,例如 2%5,10%3,6%3,對于+,-,*,/運算,如果運算符兩邊的操作數(shù)都是整數(shù),其運算結(jié)果也是整數(shù);如果參加+,-,*,/ 運算的兩個數(shù)中有一個數(shù)為float型或double型數(shù)據(jù),則運算的結(jié)果是double型, 對于求模運算,要求兩個操作數(shù)必須均為整數(shù),其結(jié)果為兩數(shù)相除后的余數(shù),除法運算,對于除法運算,如果運算符兩邊的操作數(shù)都是整數(shù),其運算結(jié)果也是整數(shù),即兩數(shù)整除;如果兩個操作符中有一個是實數(shù),其運算結(jié)果就是實數(shù)。 4/5

16、 運算結(jié)果為0, 4.0/5或4.0/5或4.0/5.0運算結(jié)果為0.8, 5/4 運算結(jié)果為1, 5.0/4或5/4.0運算結(jié)果為1.25,自增、自減運算符,自增、自減運算符有兩個,+和-,其作用是使變量的值增1和減1。+和-可以出現(xiàn)在變量的左邊或右邊,分別稱為前綴運算符和后綴運算符。 +i,-i 使用前先使變量i的值增加(減)1 i+,i- 使用后再使變量i的值增加(減)1 +i(-i)表示先對i增1(減1),再采用i的新值參與運算 i+(i-)表示先將i的值存放于臨時變量,再對i增(減1),然后再采用臨時變量存放的i的原值參與運算,例2.6】 自增運算符示例,include void m

17、ain() int i=5, j=5; int k,n; k=+i +2; /A coutk=k i=in; n=j+ +2; /B coutn=n j=jn;,k=8 i=6 n=7 j=6,程序運行結(jié)果,算術(shù)表達式,算術(shù)表達式是由算術(shù)運算符、括號和操作數(shù)構(gòu)成,能計算出一個算術(shù)值的式子。 在使用算術(shù)運算符時,需要注意有關(guān)算術(shù)表達式求值溢出的處理問題。為避免數(shù)據(jù)的溢出,編制程序時,應(yīng)考慮如下方面: 為變量選擇合適的數(shù)據(jù)類型,并確保該數(shù)據(jù)類型能存放變量可能的值, 盡可能避免除數(shù)是一個絕對值很接近于0的數(shù), 盡可能避免整數(shù)的連續(xù)乘運算,2.7.3 賦值運算符,將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為賦值,如

18、果該單元中已有值,賦值操作以新值取代舊值;從某個存儲單元中取出數(shù)據(jù)使用,稱為取值,引用不影響單元中的值,即一個量可以多次引用。常量只能取值,不能賦值。 賦值通過賦值運算符“=”來完成,其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是等號,它具有方向性,C+將變量名代表的單元稱為 “左值”,而將變量的值稱為“右值”。 左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象,因此只能是變量名,而不能是常量或表達式。 請看下面的賦值運算: 3.1415926=pi; x+y=z; const int N=30; N=40,1).賦值運算符,a=100; b=32+a*3,2) 賦值表達式,賦

19、值表達式是用賦值運算符將一個變量和一個表達式連接起來的式子。一般形式為 變量 = 表達式 由于賦值運算符的優(yōu)先級比較低,所以一般執(zhí)行順序為先計算表達式的值,然后將計算結(jié)果賦給變量。但逗號運算符例外,賦值表達式作為一種表達式,也有計算結(jié)果,其計算結(jié)果為賦值的內(nèi)容。例如: a=b=3,3)賦值表達式與復(fù)合賦值表達式,在C+中,所有的雙目算術(shù)運算符和位運算符均可與賦值運算符組合成一個單一運算符,稱為復(fù)合運賦值算符。包括以下10個: + = = * = / = % = = int b=2;則: 3.5ab/結(jié)果是,根據(jù)右結(jié)合 原則其運算 過程如下,a,2,b,3.2,3.5,T,1,F即0,在C+中這

20、兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對應(yīng)1,假對應(yīng)0;反過來,0對應(yīng)假,非0整數(shù)對應(yīng)真。所以關(guān)系運算結(jié)果可以作為整數(shù)1或者0參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算,2.7.5 邏輯運算符,從本質(zhì)上講,邏輯運算符要求操作數(shù)為邏輯量,因此,邏輯運算符的操作數(shù)可以是關(guān)系表達式或是另一個邏輯表達式。 C+中認為所有的非0為邏輯真,0為邏輯假,因此除void類型之外的任何一種數(shù)據(jù)類型數(shù)據(jù)或表達式都可作為邏輯運算符的操作數(shù),由于邏輯值和整數(shù)之間的對應(yīng)關(guān)系,也允許整型和字符型操作數(shù)進行邏輯運算: 21int i=(int)f;后,i的值為3,而f的值依然為3.6,數(shù)據(jù)強制轉(zhuǎn)換規(guī)則(1,將浮點型數(shù)據(jù)(包

21、括單、雙精度)強制轉(zhuǎn)換成整型變量時,舍棄其小數(shù)部分,整數(shù)部分在內(nèi)存中整數(shù)形式存儲。 將整型數(shù)據(jù)強制轉(zhuǎn)換成浮點型變量時,數(shù)值不變,但以浮點數(shù)形式存儲。 字符型數(shù)據(jù)強制轉(zhuǎn)換成整型變量,將字符的ASCII碼賦給整型變量,數(shù)據(jù)強制轉(zhuǎn)換規(guī)則(2,將一個int、short或long 型數(shù)據(jù)強制轉(zhuǎn)換成一個char型變量,只將其低8位原封不動地送到char型變量。 將signed(有符號)型數(shù)據(jù)強制轉(zhuǎn)換成長度相同的unsigned (無符號) 型變量,或?qū)nsigned (無符號)型數(shù)據(jù)強制轉(zhuǎn)換成長度相同的signed(有符號)型變量時,存儲單元內(nèi)容原樣照搬(連原有的符號位也作為數(shù)值一起傳送),賦值類型轉(zhuǎn)換

22、,如果賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,但都是數(shù)值型或字符型時,在賦值時會進行強制類型轉(zhuǎn)換,include void main() double f; coutf; int i=f+0.5; cout轉(zhuǎn)換后整數(shù)為i;,該程序?qū)崿F(xiàn)了將實數(shù) 四舍五入轉(zhuǎn)換成整數(shù) 的功能,2.8 C+語句,1. 聲明語句:在C+中,實現(xiàn)對數(shù)據(jù)結(jié)構(gòu)的定義和描述、對變量的定義性說明的語句被稱為說明語句。 2. 表達式語句:在合法的表達式后面加上分號,即形成了表達式語句。 3. 控制語句:控制改變程序運行順序的語句被稱為控制語句。包括:選擇語句、循環(huán)語句、流程跳轉(zhuǎn)語句等 4. 函數(shù)調(diào)用語句:在函數(shù)的調(diào)用后面加上分號,即形成函

23、數(shù)調(diào)用語句。 5. 空語句:只有一個分號組成的語句稱為空語句,它不做任何操作。 6. 復(fù)合語句:當用將若干條語句括起來,C+將其作為一條語句進行處理,被稱為復(fù)合語句,2.9 簡單的輸入輸出,C+中的簡單輸入、輸出,它是通過輸入、輸出流類的對象cin和cout完成的。 cin和cout包含在iostream.h文件中,C+的輸入輸出,cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù),格式為: cin變量名1變量名2變量名n; cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,格式為: cout,字符的輸入輸出,cin 與cin.get( )的區(qū)別 (1) cin 例如:char c1, c2, c3; cinc1;/

24、A cinc2c3; 程序執(zhí)行到A行時,等待用戶輸入數(shù)據(jù)。 若輸入:A b c 則cin分別將字符A、b、c賦給變量c1、c2、c3。 cin自動跳過輸入的空白字符(包括空格,制表,backspace和回車等,字符的輸入輸出,2)cin.get() 例如:char c1, c2, c3, c4; cin.get (c1);/B cin.get (c2); cin.get (c3); 程序執(zhí)行到B行時,若輸入:A b 則執(zhí)行結(jié)果是:字符A、空格、字符b分別賦給變量c1、c2、c3;輸入行中仍保留回車符。 cin.get()把從鍵盤上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量,字符的

25、輸入輸出,關(guān)于字符的輸出,請看下例,假定字符c1、c2、c3的值分別為字符a、b和c,執(zhí)行以下語句序列: coutc1tc2n; coutc3endl; coutOkendl; 屏幕上將輸出: ab c Ok 輸出時字符之間是無間隔的,如果想讓字符間有間隔,必須輸出間隔符,字符串常量的輸出,請看下例: char c1, c2, c3; coutc1c2c3;/C cout 程序繼續(xù)執(zhí)行并輸出結(jié)果: c1 is ac2 is bc3 is c 可以看出,雙引號中的的字符串常量照原樣輸出,十進制數(shù)據(jù)的輸入輸出,請看下例: int i, j; float x, y; coutij;/D cinxy; cout 則程序輸出: i=10j=20 x+y=13.1 輸出時各數(shù)據(jù)間是無間隔的,因此應(yīng)當有意輸出一些間隔符,如果要求按八進制或十六進制輸入輸出,在cin或cout中必須指明相應(yīng)的數(shù)據(jù)形式,oct為八進制,hex為十六進制,dec為十進制。例如: int i, j, k, l; cout oct i;/輸入為八進制數(shù) cin hex

溫馨提示

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

最新文檔

評論

0/150

提交評論