版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)所處理的數(shù)據(jù)以一定形式存放在內(nèi)存中,數(shù)據(jù)計(jì)算機(jī)所處理的數(shù)據(jù)以一定形式存放在內(nèi)存中,數(shù)據(jù)的存儲(chǔ)方式以及能夠進(jìn)行的合法運(yùn)算都與數(shù)據(jù)類型直的存儲(chǔ)方式以及能夠進(jìn)行的合法運(yùn)算都與數(shù)據(jù)類型直接相關(guān)。接相關(guān)。C+C+的特點(diǎn)之一就是提供了豐富的數(shù)據(jù)類型,的特點(diǎn)之一就是提供了豐富的數(shù)據(jù)類型,以便處理各種不同的數(shù)據(jù)。以便處理各種不同的數(shù)據(jù)。數(shù)據(jù)類型數(shù)據(jù)類型總是與運(yùn)算封裝總是與運(yùn)算封裝在一起,本質(zhì)上是面向?qū)ο蟮?。在一起,本質(zhì)上是面向?qū)ο蟮摹1菊聦⒑?jiǎn)要介紹本章將簡(jiǎn)要介紹C+C+中的數(shù)據(jù)類型及相關(guān)運(yùn)算,以及常量、變量、表達(dá)式、中的數(shù)據(jù)類型及相關(guān)運(yùn)算,以及常量、變量、表達(dá)式、語句等,最后介紹簡(jiǎn)單的輸入輸出方法。語句
2、等,最后介紹簡(jiǎn)單的輸入輸出方法。第二章第二章 C+基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)第1頁/共88頁第二章第二章 C+基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)21 C+的詞法單位的詞法單位25 運(yùn)算符、表達(dá)式和語句運(yùn)算符、表達(dá)式和語句26 簡(jiǎn)單的輸入輸出簡(jiǎn)單的輸入輸出24 數(shù)組與字符數(shù)組數(shù)組與字符數(shù)組23 常量和變量常量和變量22 C+ 中的數(shù)據(jù)類型中的數(shù)據(jù)類型ok第2頁/共88頁2.1 C+的詞法單位的詞法單位211 C+的字符集 212 關(guān)鍵字 213 標(biāo)識(shí)符(ID,identifier) 214 標(biāo)點(diǎn)符號(hào) ok第3頁/共88頁2.1.1 C+的字符集的字符集ASCII碼字符集是計(jì)算機(jī)中的常用字符集。它包括英文字母及阿拉伯?dāng)?shù)字等1
3、28個(gè)字符,存儲(chǔ)一個(gè)ASCII碼占用一個(gè)字節(jié)單元。由于漢字處理的需要,又出現(xiàn)了漢字國(guó)標(biāo)碼等對(duì)應(yīng)于不同語言的字符集。國(guó)標(biāo)碼的存儲(chǔ)占用兩個(gè)字節(jié)單元。Unicode字符集對(duì)各類字符進(jìn)行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個(gè)字符。 ASCII碼字符集,國(guó)標(biāo)碼字符集都是它的子集。ok第4頁/共88頁C+的字符集的字符集26個(gè)個(gè)小寫字母小寫字母 abcdefghijklmnopqrstuvwxyz 26個(gè)個(gè)大寫字母大寫字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10個(gè)個(gè)阿拉伯?dāng)?shù)阿拉伯?dāng)?shù)字字 0 1 2 3 4 5 6 7 8 9 其他符號(hào)其他符號(hào) + -
4、 * / = , . _ : ; ? | ! # % & () 空格空格 C+語言使用下列基本字符來構(gòu)成詞法單位:結(jié)束第5頁/共88頁2.1.2 關(guān)關(guān) 鍵鍵 字字關(guān)鍵字(keyword)又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用。C+區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準(zhǔn)C+(ISO14882)定義了74個(gè)關(guān)鍵字,具體的C+編譯器還會(huì)做一些增刪。常用關(guān)鍵字及分類見表。ok第6頁/共88頁 關(guān)關(guān) 鍵鍵 字字?jǐn)?shù)據(jù)類型說明符與修飾符bool char wchar_t class const double enum float int long short sig
5、ned struct union unsigned void volatile存儲(chǔ)類型說明符auto extern inline register static訪問說明符friend private protected public其它說明符asm explicit namespace operator template this typedef typename using virtual 語句與標(biāo)號(hào)break case catch continue default do else for goto if return switch throw try while 運(yùn)算符及邏輯值delete
6、 false new sizeof true表2-1 C+2-1 C+常用關(guān)鍵字及分類 ok第7頁/共88頁 關(guān)關(guān) 鍵鍵 字字結(jié)束 還有一些關(guān)鍵字本書未介紹:還有一些關(guān)鍵字本書未介紹: const_cast dynamic_cast reinterpret_cast static_cast export mutable typeid 下面可用一些關(guān)鍵字代替邏輯運(yùn)算符:下面可用一些關(guān)鍵字代替邏輯運(yùn)算符:and and_eq bitand bitorCompl not or or_eqXor xor_eq not_eq第8頁/共88頁2.1.3 標(biāo)識(shí)符標(biāo)識(shí)符標(biāo)識(shí)符(IdentifierIdenti
7、fier,ID ID )是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。合法標(biāo)識(shí)符由字母或下劃線開始,由字母、數(shù)字、下劃線組成,其有效長(zhǎng)度為1 13131個(gè)字符,長(zhǎng)度超過3131個(gè)字符者只識(shí)別前3131個(gè)字符,VC+VC+標(biāo)識(shí)符長(zhǎng)度為1 1247247個(gè)字符。建議使用有一定含義的英文單詞或拼音序列作標(biāo)識(shí)符,以提高可讀性;另外盡量不用下劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵字沖突。ok第9頁/共88頁標(biāo)識(shí)符標(biāo)識(shí)符例: 判斷下面哪些是合法的標(biāo)識(shí)符: MyFileSalary 94amountvoid94SalarySalary94$amountNum_of_Student結(jié)束第1
8、0頁/共88頁2.1.4 標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào)包括:#、( )、 ,、 :、 ;、 、 等。 標(biāo)點(diǎn)符號(hào)的作用:有一定的語法意義。如字符和字符串常量分別用 和 “ ”引起來。對(duì)語法符號(hào)起分隔作用。如 ;等結(jié)束第11頁/共88頁2.2 C+中的數(shù)據(jù)類型中的數(shù)據(jù)類型圖2-1 C+的數(shù)據(jù)結(jié)構(gòu)實(shí) 型 float雙精度型 doubleC+的數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型數(shù)組 type 指針 type *結(jié)構(gòu) struct聯(lián)合 union枚舉 enum類 class整 型 int字符型 char邏輯型 bool無值型 void實(shí) 型ok第12頁/共88頁 C+C+對(duì)基本數(shù)據(jù)類型也分別進(jìn)行了封裝,稱對(duì)
9、基本數(shù)據(jù)類型也分別進(jìn)行了封裝,稱為為內(nèi)置數(shù)據(jù)類型內(nèi)置數(shù)據(jù)類型,內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù),內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,類型,還定義了還定義了常用操作常用操作。本節(jié)僅介紹各種基本。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用操作將在后面介紹。數(shù)據(jù)類型的定義,常用操作將在后面介紹。 C+C+為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從“先說明后使用先說明后使用”的原則,以便編譯器進(jìn)行編譯。的原則,以便編譯器進(jìn)行編譯。 整型整型用來存放整數(shù),整數(shù)(有符號(hào)的整數(shù))用來存放整數(shù),整數(shù)(有符號(hào)的整數(shù))在內(nèi)存中存放的是它的補(bǔ)碼,無符號(hào)數(shù)沒有符在內(nèi)存中存放的是它的補(bǔ)碼,無符號(hào)數(shù)沒有符
10、號(hào)位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與號(hào)位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與機(jī)型有關(guān),機(jī)型有關(guān),3232位機(jī)上占用位機(jī)上占用4 4個(gè)字節(jié)。個(gè)字節(jié)。 第13頁/共88頁 字符型字符型用來保存字符,存儲(chǔ)的是該字符的用來保存字符,存儲(chǔ)的是該字符的ASCIIASCII碼,碼,占用一個(gè)字節(jié)。如大寫字母占用一個(gè)字節(jié)。如大寫字母A A的的ASCIIASCII碼為碼為6565,在對(duì)應(yīng)的,在對(duì)應(yīng)的一個(gè)字節(jié)中存放的就是一個(gè)字節(jié)中存放的就是6565。字符型數(shù)據(jù)從本質(zhì)上說也是。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個(gè)整數(shù),可以是任何一個(gè)8 8位二進(jìn)制整數(shù)。位二進(jìn)制整數(shù)。 由于漢語系字符很多,用由于漢語系字符很
11、多,用ASCIIASCII字符集處理遠(yuǎn)遠(yuǎn)不夠,字符集處理遠(yuǎn)遠(yuǎn)不夠,因此又創(chuàng)立了雙字節(jié)字符集(因此又創(chuàng)立了雙字節(jié)字符集(DBCSDBCS:double-byte double-byte character setcharacter set),每個(gè)字符用兩個(gè)字節(jié)來編碼。為便于),每個(gè)字符用兩個(gè)字節(jié)來編碼。為便于軟件的國(guó)際化,國(guó)際上一些知名公司聯(lián)合制定了新的寬軟件的國(guó)際化,國(guó)際上一些知名公司聯(lián)合制定了新的寬字節(jié)字符標(biāo)準(zhǔn)字節(jié)字符標(biāo)準(zhǔn)UnicodeUnicode。該標(biāo)準(zhǔn)中所有字符都是雙字。該標(biāo)準(zhǔn)中所有字符都是雙字節(jié)的,不同的語言和字符集分別占用其中一段代碼。這節(jié)的,不同的語言和字符集分別占用其中一段代碼
12、。這種用統(tǒng)一編碼處理西文、中文及其它語言符號(hào),就是種用統(tǒng)一編碼處理西文、中文及其它語言符號(hào),就是unicodeunicode碼。碼。C+C+同時(shí)也支持寬字符類型(同時(shí)也支持寬字符類型(wchar_twchar_t),或),或稱雙字節(jié)字符型稱雙字節(jié)字符型。 第14頁/共88頁 實(shí)型實(shí)型和和雙精度型雙精度型都用來存放實(shí)數(shù),兩者表示的實(shí)數(shù)都用來存放實(shí)數(shù),兩者表示的實(shí)數(shù)精度不同。實(shí)數(shù)在內(nèi)存中以規(guī)范化的浮點(diǎn)數(shù)存放,包括精度不同。實(shí)數(shù)在內(nèi)存中以規(guī)范化的浮點(diǎn)數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位位機(jī)上實(shí)型為機(jī)上實(shí)型為23位(因規(guī)范化數(shù)的數(shù)碼
13、最高位恒為位(因規(guī)范化數(shù)的數(shù)碼最高位恒為1,不必,不必存儲(chǔ),實(shí)際為存儲(chǔ),實(shí)際為24位),雙精度為位),雙精度為52位。位。 邏輯型也稱布爾型,其取值為true(邏輯真)和false(邏輯假),存儲(chǔ)字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,中為1個(gè)字節(jié)。布爾型在運(yùn)算中可以和整型相互轉(zhuǎn)化,false對(duì)應(yīng)為0,true對(duì)應(yīng)為1或非0無值型主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。 基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號(hào))、unsigned(無符號(hào))、long(長(zhǎng))、short(短)。參見下表:第15頁/共88頁2. 2結(jié)束 類 型名 稱占用字節(jié)數(shù)取 值 范 圍bool布爾
14、型 true, false(signed) char有符號(hào)字符型1-128 127unsiged char無符號(hào)字符型10 255(signed) short (int)有符號(hào)短整型2-32768 32767unsigned short (int)無符號(hào)短整型20 65535(signed) int (signed)有符號(hào)整型4-231 (231-1)unsigned (int)無符號(hào)整型40 (232-1)(signed) long (int)有符號(hào)長(zhǎng)整型4-231 (231-1)unsigned long (int)無符號(hào)長(zhǎng)整型40 (232-1)float實(shí)型4-1038 1038dou
15、ble雙精度型8-10308 10308long double長(zhǎng)雙精度型8-10308 10308void無值型0無值VC+中所有基本數(shù)據(jù)類型第16頁/共88頁2.3 常量和變量常量和變量2.3.1 變 量2.3.2 字面常量2.3.3 常變量及常量說明符const在程序中,常量和變量是用來表示數(shù)據(jù)的;在程序中,常量和變量是用來表示數(shù)據(jù)的;常量又分為字面常量、常變量;常量又分為字面常量、常變量;ok第17頁/共88頁2.3.1 變變 量量1 1 變量說明變量說明 2 2 變量賦初值變量賦初值 變量變量,在程序中是指可以改變值的量;,在程序中是指可以改變值的量;變量必須用標(biāo)識(shí)符進(jìn)行標(biāo)識(shí),稱為變量
16、必須用標(biāo)識(shí)符進(jìn)行標(biāo)識(shí),稱為變量名變量名;變量有變量有類型類型之分,如整形變量、字符變量等;之分,如整形變量、字符變量等;任何變量都必須任何變量都必須先說明后使用先說明后使用;一是便于編譯;一是便于編譯程序?yàn)樽兞糠峙淇臻g,二是便于編譯時(shí)進(jìn)行語程序?yàn)樽兞糠峙淇臻g,二是便于編譯時(shí)進(jìn)行語法檢查;法檢查;變量使用的第一步,是給變量賦變量使用的第一步,是給變量賦初始值初始值;ok第18頁/共88頁1變量說明變量說明 在在C+C+中,變量說明的一般格式為:中,變量說明的一般格式為:存儲(chǔ)類型存儲(chǔ)類型數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1 1, ,變量名變量名2, 2, , ,變量名變量名n n; 下面是變量說明的幾
17、個(gè)例子:int i, j, k; /說明三個(gè)整型變量i, j, kfloat x, y, z; /說明三個(gè)實(shí)型變量x, y, zchar c1, c2; /說明兩個(gè)字符型變量c1, c2double dx; /說明一個(gè)雙精度型變量dx 變量說明 結(jié)束 第19頁/共88頁2變量賦初值變量賦初值(1 1)變量說明時(shí)直接賦初值。變量說明時(shí)直接賦初值。例如:例如:int a=3, b=4, c=5;int a=3, b=4, c=5;;(2 2)用賦值語句賦初值。用賦值語句賦初值。嚴(yán)格的說,只有前嚴(yán)格的說,只有前者可稱賦初值者可稱賦初值例如:例如:float x, e;float x, e;x=3.5
18、; x=3.5; e=2.71828;e=2.71828;結(jié)束 給變量賦初值稱為初始化,有兩種方法:第20頁/共88頁2.3.2 字面常量字面常量1. 1. 整型常量整型常量 4. 4. 字符串常量字符串常量3. 3. 字符型常量字符型常量2. 2. 實(shí)型常量實(shí)型常量字面常量,指程序中直接給出的量;常量的值在程序執(zhí)行過程中保持不變;并且存儲(chǔ)在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為以下幾種:ok第21頁/共88頁1.整型常量整型常量十進(jìn)制表示法十進(jìn)制表示法八進(jìn)制表示法八進(jìn)制表示法十六進(jìn)制表示法十六進(jìn)制表示法其他表示法其他表示法即整數(shù),可以有多種表示方法:ok第22頁/共88頁 整數(shù)
19、的十進(jìn)制表示方法整數(shù)的十進(jìn)制表示方法十進(jìn)制表示與我們熟悉的書寫方式相同。十進(jìn)制表示與我們熟悉的書寫方式相同。如如15 -24ok第23頁/共88頁 整數(shù)的八進(jìn)制表示整數(shù)的八進(jìn)制表示 八進(jìn)制表示八進(jìn)制表示以以0 0開始,由數(shù)字開始,由數(shù)字0 0 7 7組成組成,用來,用來表示一個(gè)八進(jìn)制數(shù)。表示一個(gè)八進(jìn)制數(shù)。如:如:012012 / /八進(jìn)制數(shù)八進(jìn)制數(shù)1212,即十進(jìn)制數(shù),即十進(jìn)制數(shù)1010-0655-0655/八進(jìn)制數(shù)八進(jìn)制數(shù)-655-655,即十進(jìn)制數(shù),即十進(jìn)制數(shù)-429-429ok第24頁/共88頁 整數(shù)的十六進(jìn)制表示整數(shù)的十六進(jìn)制表示 十六進(jìn)制以0X0X(大小寫均可)開始,由數(shù)字0 0 9
20、 9和字母A A F F(大小寫均可)組成,用來表示一個(gè)十六進(jìn)制數(shù)。以下是一些常整數(shù)的例子:0 x32A /0 x32A /十六進(jìn)制數(shù)32A32A,即十進(jìn)制數(shù)810810-0 x2fe0 /-0 x2fe0 /十六進(jìn)制數(shù)-2fe0-2fe0, /即十進(jìn)制數(shù)-12256-12256ok第25頁/共88頁整數(shù)的其他表示方法整數(shù)的其他表示方法 整型常量還可以表示長(zhǎng)整數(shù)和無符號(hào)整數(shù)。長(zhǎng)整型常數(shù)以 L L 或 l l 結(jié)尾,無符號(hào)常整數(shù)以 U U 或 u u 結(jié)尾,以 U LU L 或 L UL U(大小寫均可)結(jié)尾則可表示無符號(hào)長(zhǎng)整型常數(shù)。例如:-84L-84L/十進(jìn)制長(zhǎng)整數(shù)-84-84026U026
21、U/八進(jìn)制表示的無符號(hào)整數(shù)26260X32LU /0X32LU /十六進(jìn)制表示的無符號(hào)長(zhǎng)整型數(shù)3232。整數(shù) 結(jié)束 第26頁/共88頁2.實(shí)型常量實(shí)型常量( (1)1)一般形式與平時(shí)書寫形式相同,由數(shù)字 0 0 9 9和小數(shù)點(diǎn)組成。例如:0.23 -125.76 0.0 .46 -35.0.23 -125.76 0.0 .46 -35.(2) (2) 指數(shù)形式(也稱為科學(xué)表示法)表示為尾數(shù)乘以1010的次方形式,由尾數(shù)、E E或e e和階數(shù)組成。指數(shù)形式要求在E E或e e前面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù)。 例 : : 判斷下列表示是否合法123E12 -.34e-2 E4
22、1.43E3.5 包含小數(shù)點(diǎn)和包含小數(shù)點(diǎn)和1010的冪的數(shù)為實(shí)型常量,有的冪的數(shù)為實(shí)型常量,有兩種表示方法:兩種表示方法:實(shí)數(shù)實(shí)數(shù) 結(jié)束結(jié)束第27頁/共88頁3.字符型常量字符型常量 字符常量是用單引號(hào)引起來的單個(gè)字符。在內(nèi)存中保存的是字符的ASCIIASCII碼值。在所有字符中,有些是可顯示字符,通常就用單引號(hào)引起來表示:a a /字符a a /字符 44/字符4 4 /空格字符有些是特殊情況字符,如不可顯示的字符等,c+c+使用轉(zhuǎn)義序列表示方法,如(祥見表2-32-3,此處略):n n /換行 / / 字符 字符常字符常 結(jié)束結(jié)束 第28頁/共88頁4. 字符串常量字符串常量字符串常量與字
23、符型常量的區(qū)別字符串常量aa占兩個(gè)字節(jié),存放aa和 0 0,值為0 x61000 x6100字符型常量aa占一個(gè)字節(jié),存放aa,值為0 x610 x61結(jié)束用雙引號(hào)引起來的若干個(gè)字符稱為字符串常量用雙引號(hào)引起來的若干個(gè)字符稱為字符串常量。例如例如:I am a Chinese.,123, a ,:I am a Chinese.,123, a , 第29頁/共88頁2.3.3 常變量及常量說明符常變量及常量說明符const用常量說明符用常量說明符constconst給字面常量起個(gè)名字(標(biāo)識(shí)符),給字面常量起個(gè)名字(標(biāo)識(shí)符),這個(gè)標(biāo)識(shí)符就稱為這個(gè)標(biāo)識(shí)符就稱為標(biāo)識(shí)符常量標(biāo)識(shí)符常量;因?yàn)闃?biāo)識(shí)符常量的說
24、明和引用形式很像變量,所以也因?yàn)闃?biāo)識(shí)符常量的說明和引用形式很像變量,所以也稱稱常變量常變量;例如:;例如:constconst float PI=3.14159; float PI=3.14159;const const int Number_of_Student=100; int Number_of_Student=100;常變量必須也只能在說明時(shí)進(jìn)行初始化;常變量必須也只能在說明時(shí)進(jìn)行初始化;常變量初始化之后,不允許再被賦值;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量必須先說明后使用;常變量存儲(chǔ)在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時(shí)常變量存儲(chǔ)在數(shù)據(jù)區(qū),并且可以按地址訪問
25、,編譯時(shí)系統(tǒng)對(duì)常變量進(jìn)行類型檢查。系統(tǒng)對(duì)常變量進(jìn)行類型檢查。C+C+建議使用常變量,而不要使用文字常量。建議使用常變量,而不要使用文字常量。2.3.3 結(jié)束第30頁/共88頁2.4 數(shù)組與字符數(shù)組數(shù)組與字符數(shù)組2.4.1 2.4.1 數(shù)數(shù) 組組2.4.2 2.4.2 字字 符符 數(shù)數(shù) 組組本節(jié)介紹一種用戶自定義的導(dǎo)出數(shù)據(jù)類型 數(shù)組類型ok第31頁/共88頁2.4.1 數(shù)組數(shù)組數(shù)組是有限個(gè)數(shù)組是有限個(gè)同類型同類型元素的有序集合元素的有序集合,這些元,這些元素有一個(gè)共同的名字,每個(gè)元素以其在數(shù)組中的素有一個(gè)共同的名字,每個(gè)元素以其在數(shù)組中的位置區(qū)分位置區(qū)分,位置用,位置用下標(biāo)下標(biāo)表示。表示。 例如
26、數(shù)列或向量就可以看作一個(gè)數(shù)組,其中的例如數(shù)列或向量就可以看作一個(gè)數(shù)組,其中的元素用一個(gè)下標(biāo)即可確定。元素用一個(gè)下標(biāo)即可確定。 矩陣也可看作一個(gè)數(shù)組,其中的元素需要用矩陣也可看作一個(gè)數(shù)組,其中的元素需要用“行行”、“列列”兩個(gè)下標(biāo)確定。兩個(gè)下標(biāo)確定。 數(shù)組下標(biāo)的個(gè)數(shù)稱作數(shù)組下標(biāo)的個(gè)數(shù)稱作維數(shù)維數(shù),上述代表數(shù)列的數(shù),上述代表數(shù)列的數(shù)組和代表矩陣的數(shù)組分別稱為一維數(shù)組和二維數(shù)組和代表矩陣的數(shù)組分別稱為一維數(shù)組和二維數(shù)組。本節(jié)只介紹一維數(shù)組。組。本節(jié)只介紹一維數(shù)組。ok第32頁/共88頁 一維數(shù)組一維數(shù)組定義一個(gè)一維數(shù)組的一般格式為: 存儲(chǔ)類型存儲(chǔ)類型 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 常量常量 ; 數(shù)
27、據(jù)類型指的是數(shù)組中元素的數(shù)據(jù)類型,可以是C+中定義的任何一種數(shù)據(jù)類型。 寫在中括號(hào)中的常量用來定義數(shù)組大小,即數(shù)組中元素的個(gè)數(shù)。例如:int m5; /定義數(shù)組m, 其中有5個(gè)整數(shù) const int N=3; float xN;/數(shù)組x中有3個(gè)實(shí)數(shù)ok第33頁/共88頁 一維數(shù)組一維數(shù)組 數(shù)組在存儲(chǔ)單元中是按下標(biāo)的順序連續(xù)存放的,數(shù)組在存儲(chǔ)單元中是按下標(biāo)的順序連續(xù)存放的,任何一個(gè)元素都可以單獨(dú)訪問,其標(biāo)識(shí)方法是用任何一個(gè)元素都可以單獨(dú)訪問,其標(biāo)識(shí)方法是用數(shù)組名和下標(biāo):數(shù)組名和下標(biāo): 數(shù)組名數(shù)組名 表達(dá)式表達(dá)式 表達(dá)式用來計(jì)算下標(biāo)值。表達(dá)式用來計(jì)算下標(biāo)值。C+C+中規(guī)定數(shù)組第一中規(guī)定數(shù)組第一個(gè)
28、元素的下標(biāo)為個(gè)元素的下標(biāo)為0 0。okm4m3m2m1m0 x2x1x0第34頁/共88頁 一維數(shù)組一維數(shù)組 C+C+中數(shù)組大小在編譯時(shí)確定,編譯系統(tǒng)按照定義為中數(shù)組大小在編譯時(shí)確定,編譯系統(tǒng)按照定義為數(shù)組分配一段連續(xù)的存儲(chǔ)單元,這段單元的大小也是不數(shù)組分配一段連續(xù)的存儲(chǔ)單元,這段單元的大小也是不能改變的,因此數(shù)組大小不能用變量定義,而只能是一能改變的,因此數(shù)組大小不能用變量定義,而只能是一個(gè)正整數(shù)常量。個(gè)正整數(shù)常量。 下列定義是下列定義是非法非法的:的:int count;float scount;/數(shù)組個(gè)數(shù)不能是變量,且必?cái)?shù)組個(gè)數(shù)不能是變量,且必/須在定義時(shí)指明須在定義時(shí)指明;const
29、float Num=3;int nNum;/數(shù)組個(gè)數(shù)不能是實(shí)數(shù)數(shù)組個(gè)數(shù)不能是實(shí)數(shù);對(duì)數(shù)組的訪問對(duì)數(shù)組的訪問指的指的是對(duì)數(shù)組元素的訪問是對(duì)數(shù)組元素的訪問,不能直接將數(shù),不能直接將數(shù)組名作為訪問對(duì)象,對(duì)數(shù)組賦值也必須對(duì)每一個(gè)元素逐組名作為訪問對(duì)象,對(duì)數(shù)組賦值也必須對(duì)每一個(gè)元素逐個(gè)賦值。個(gè)賦值。參見下例:參見下例: ok第35頁/共88頁 一維數(shù)組一維數(shù)組int_arr3=int_arr2=int_arr1=int_arr0= 11231輸出結(jié)束1231+2=3【例21】使用數(shù)組的簡(jiǎn)單例子。# include void main() int int_arr4;int_arr0=1; int_arr1
30、=1; int_arr2=2;int_arr3=int_arr1+int_arr2;coutint_arr0n int_arr1n int_arr2n int_arr3 n; 第36頁/共88頁2.4.2 字符數(shù)組字符數(shù)組如果數(shù)組中的元素為字符,就稱為如果數(shù)組中的元素為字符,就稱為字符數(shù)組字符數(shù)組。例如:。例如:char string110; /可用來保存可用來保存1010個(gè)字符的字符數(shù)組個(gè)字符的字符數(shù)組; ;char city_name1 = N,a,n,j,i,n,g; /可用來保存可用來保存7 7個(gè)字符的字符數(shù)組個(gè)字符的字符數(shù)組; ;C+C+中字符數(shù)組用來保存字符串中字符數(shù)組用來保存字符
31、串。允許直接用字符串常。允許直接用字符串常量給字符數(shù)組量給字符數(shù)組初始化初始化。例如:。例如:char city_name2=”Nanjing”;用字符串初始化,字符數(shù)組會(huì)自動(dòng)加上一個(gè)用字符串初始化,字符數(shù)組會(huì)自動(dòng)加上一個(gè)串結(jié)束符串結(jié)束符00 。串結(jié)束符在字符串操作中具有十分重要的意。串結(jié)束符在字符串操作中具有十分重要的意義,因此在定義字符數(shù)組大小時(shí),要注意留出足夠的空義,因此在定義字符數(shù)組大小時(shí),要注意留出足夠的空間保存串結(jié)束符。間保存串結(jié)束符。ok第37頁/共88頁 字符數(shù)組字符數(shù)組 為了處理字符串,為了處理字符串,C+中提供了若干中提供了若干字符串處理函字符串處理函數(shù)數(shù),這些函數(shù)定義在文
32、件中,其中包括:,這些函數(shù)定義在文件中,其中包括: strlen(s),返回字符串返回字符串s的實(shí)際長(zhǎng)度(不包括的實(shí)際長(zhǎng)度(不包括0););strcpy(s1,s2),將字符串將字符串s2中中0之前的所有字符依次賦值到字符串之前的所有字符依次賦值到字符串s1中,中,最后最后再加上一個(gè)再加上一個(gè)0。由于不能直接對(duì)字符數(shù)組名賦值,。由于不能直接對(duì)字符數(shù)組名賦值,所以將一個(gè)字符串的值賦給另一個(gè)字符串必須用所以將一個(gè)字符串的值賦給另一個(gè)字符串必須用字符串拷字符串拷貝函數(shù)貝函數(shù)完成。例如:完成。例如:char string220;string2=”VC+”;/非法非法strcpy(string2, “V
33、C+”);/合法合法第38頁/共88頁 字符數(shù)字符數(shù)組組【例22】 字符數(shù)組和字符串處理函數(shù)的應(yīng)用。# include # include void main( ) char s1 =”Hello C+”;/初始化決定數(shù)組s1有10個(gè)元素char s210, s320;s20= B; s21= e; s22=g; s23= i;s24= n; s25= 0; /對(duì)字符串結(jié)束處理非常重要strcpy(s3, s2);cout”The length of”s1”is:”strlen(s1)n;/只有字符數(shù)組可整體輸出,因?yàn)橛薪Y(jié)束符couts2ts3ab/結(jié)果是結(jié)果是?根據(jù)右結(jié)合根據(jù)右結(jié)合原則其運(yùn)算
34、原則其運(yùn)算過程如下:過程如下:a5b3F, 即0F即0第49頁/共88頁優(yōu)先級(jí)運(yùn)算符名 稱語 義2!邏輯非, 單目操作數(shù)的值為真,則結(jié)果為假;12&邏輯與,雙目當(dāng)兩個(gè)操作數(shù)全為真時(shí),結(jié)果為真,否則為假;13|邏輯或,雙目?jī)蓚€(gè)操作數(shù)中有一個(gè)為真,則結(jié)果為真;邏輯運(yùn)算符邏輯運(yùn)算符第50頁/共88頁 邏輯運(yùn)算符用來進(jìn)行邏輯運(yùn)算。其操作數(shù)和運(yùn)邏輯運(yùn)算符用來進(jìn)行邏輯運(yùn)算。其操作數(shù)和運(yùn)算結(jié)果均為算結(jié)果均為邏輯量邏輯量。運(yùn)算結(jié)果同樣可以作為一個(gè)。運(yùn)算結(jié)果同樣可以作為一個(gè)整整數(shù)數(shù)參與其他運(yùn)算。參與其他運(yùn)算。 由于由于邏輯值邏輯值和和整數(shù)整數(shù)之間的之間的對(duì)應(yīng)關(guān)系,對(duì)應(yīng)關(guān)系,也允許也允許整型整型和和字符型
35、字符型操作數(shù)進(jìn)行操作數(shù)進(jìn)行邏輯運(yùn)算邏輯運(yùn)算:21&021&0/邏輯與,邏輯與,2121與與0 0,結(jié)果為假:,結(jié)果為假:0 021|021|0/邏輯或,邏輯或,2121或或0 0,結(jié)果為真:,結(jié)果為真:1 1!21!21/邏輯非,邏輯非,2121的非,結(jié)果為假:的非,結(jié)果為假:0 0邏輯運(yùn)算符邏輯運(yùn)算符第51頁/共88頁3.位運(yùn)算符位運(yùn)算符(1)按位取反運(yùn)算符“” (2)左移運(yùn)算符“” (4)按位與運(yùn)算符“&” (5)按位或運(yùn)算符“|” (6)按位異或運(yùn)算符“” okc+c+語言提供字位運(yùn)算,它對(duì)操作數(shù)的各個(gè)位進(jìn)行操作。語言提供字位運(yùn)算,它對(duì)操作數(shù)的各個(gè)位進(jìn)行操作。第5
36、2頁/共88頁(1 1)按位取反運(yùn)算符)按位取反運(yùn)算符“”將操作數(shù)的每個(gè)二進(jìn)制位取反,即將操作數(shù)的每個(gè)二進(jìn)制位取反,即1 1變?yōu)樽優(yōu)? 0,0 0變?yōu)樽優(yōu)? 1。例如,。例如,整數(shù)整數(shù)a a的值為的值為1001101110011011,則,則aa的值為的值為0110010001100100。(2 2)左移運(yùn)算符)左移運(yùn)算符“”運(yùn)算一般格式為:運(yùn)算一般格式為:ana”與左移運(yùn)算符類同,將左操作數(shù)向右移動(dòng)右操作數(shù)指定的與左移運(yùn)算符類同,將左操作數(shù)向右移動(dòng)右操作數(shù)指定的二進(jìn)制位數(shù),忽略移位后的小數(shù)部分,并在高位補(bǔ)二進(jìn)制位數(shù),忽略移位后的小數(shù)部分,并在高位補(bǔ)0 0。一。一個(gè)整數(shù)右移個(gè)整數(shù)右移n n位相
37、當(dāng)于位相當(dāng)于除以除以2 2的的n n次方,但比除法快。次方,但比除法快。 在中有符號(hào)數(shù)右移時(shí)高位補(bǔ)符號(hào)位,嚴(yán)格對(duì)應(yīng)除法。在中有符號(hào)數(shù)右移時(shí)高位補(bǔ)符號(hào)位,嚴(yán)格對(duì)應(yīng)除法。以上三種單目運(yùn)算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一以上三種單目運(yùn)算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一個(gè)中間量,這個(gè)中間量被引用后即不再存在。個(gè)中間量,這個(gè)中間量被引用后即不再存在。 第53頁/共88頁(4 4)按位與運(yùn)算符)按位與運(yùn)算符“&”&”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯與運(yùn)算。運(yùn)算規(guī)則將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯與運(yùn)算。運(yùn)算規(guī)則為:對(duì)應(yīng)位均為為:對(duì)應(yīng)位均為1 1時(shí),該位運(yùn)算結(jié)果為時(shí),該位運(yùn)算結(jié)果為1
38、 1;否則為;否則為0 0。例如:。例如:a 01001101a 01001101b 00001111b 00001111a & b 00001101a & b 00001101該運(yùn)算可用來將整數(shù)的某些位置該運(yùn)算可用來將整數(shù)的某些位置0 0,而保留所需要的位,上例,而保留所需要的位,上例保留了低四位。保留了低四位。(5 5)按位或運(yùn)算符)按位或運(yùn)算符“|”|”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯或運(yùn)算。運(yùn)算規(guī)則將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯或運(yùn)算。運(yùn)算規(guī)則為:只要有一個(gè)數(shù)對(duì)應(yīng)位為為:只要有一個(gè)數(shù)對(duì)應(yīng)位為1 1,該位運(yùn)算結(jié)果即為,該位運(yùn)算結(jié)果即為1 1;兩個(gè)數(shù);兩個(gè)數(shù)對(duì)應(yīng)位
39、均為對(duì)應(yīng)位均為0 0,該位結(jié)果為,該位結(jié)果為0 0。例如:。例如:a 01001101a 01001101b 00001111b 00001111a | b 01001111a | b 01001111該運(yùn)算符可用來將整數(shù)的某些位置該運(yùn)算符可用來將整數(shù)的某些位置1 1。上例高四位不變,低四。上例高四位不變,低四位全位全1 1。第54頁/共88頁(6 6)按位異或運(yùn)算符)按位異或運(yùn)算符“”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位異或運(yùn)算。運(yùn)算規(guī)則為:將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位異或運(yùn)算。運(yùn)算規(guī)則為:當(dāng)對(duì)應(yīng)位的值不同時(shí),該位運(yùn)算結(jié)果為當(dāng)對(duì)應(yīng)位的值不同時(shí),該位運(yùn)算結(jié)果為1 1,否則為,否則為0 0。例如
40、:。例如:a 01001101a 01001101b 00001111b 00001111a b 01000010a b 01000010該運(yùn)算符可用來將一個(gè)整數(shù)的某些位取反,或?qū)⒄妥兞康脑撨\(yùn)算符可用來將一個(gè)整數(shù)的某些位取反,或?qū)⒄妥兞康闹抵弥抵? 0(將整型變量與自身按位異或)。上例低四位取反,(將整型變量與自身按位異或)。上例低四位取反,高四位不變。高四位不變。需要說明的一點(diǎn)是,以上例子中的整數(shù)都只取了低需要說明的一點(diǎn)是,以上例子中的整數(shù)都只取了低8 8位一個(gè)位一個(gè)字節(jié)。字節(jié)。第55頁/共88頁4.賦值運(yùn)算符賦值運(yùn)算符ok 將數(shù)據(jù)存放到相應(yīng)存儲(chǔ)單元中稱為將數(shù)據(jù)存放到相應(yīng)存儲(chǔ)單元中稱為賦
41、值賦值,如果,如果該單元中已有值,賦值操作以新值取代舊值;從該單元中已有值,賦值操作以新值取代舊值;從某個(gè)存儲(chǔ)單元中取出數(shù)據(jù)使用,稱為引用,引用某個(gè)存儲(chǔ)單元中取出數(shù)據(jù)使用,稱為引用,引用不影響單元中的值,即一個(gè)量可以多次引用。不影響單元中的值,即一個(gè)量可以多次引用。常常量量只能引用,不能賦值。只能引用,不能賦值。 賦值通過賦值運(yùn)算符“=”來完成,其意義是將賦值號(hào)右邊的值送到左邊變量所對(duì)應(yīng)的單元中。賦值號(hào)不是等號(hào),它具有方向性。 第56頁/共88頁C+C+將變量名代表的單元稱為將變量名代表的單元稱為 “ “左值左值”,而將變,而將變量的值稱為量的值稱為“右值右值”。 左值必須是內(nèi)存中一個(gè)左值必須
42、是內(nèi)存中一個(gè)可以訪問且可以合法修改的對(duì)象可以訪問且可以合法修改的對(duì)象,因此只能是變,因此只能是變量名,量名,而不能是常量或表達(dá)式而不能是常量或表達(dá)式。4.賦值運(yùn)算符例如下面的賦值運(yùn)算是錯(cuò)誤的:3.1415926=pi;/左值不能是常數(shù)x+y=z;/左值不能是表達(dá)式const int N=30;N=40;/左值不能是常變量第57頁/共88頁5.自增自減運(yùn)算自增自減運(yùn)算運(yùn)算分前置和后置兩種,運(yùn)算分前置和后置兩種,前置是先增減后引用前置是先增減后引用,即先,即先對(duì)變量自加或自減,用新的值參與其他運(yùn)算;對(duì)變量自加或自減,用新的值參與其他運(yùn)算;后置則后置則是先引用后增減是先引用后增減,即用變量原來的值參
43、與其他運(yùn)算,即用變量原來的值參與其他運(yùn)算,然后再對(duì)變量進(jìn)行自加或自減然后再對(duì)變量進(jìn)行自加或自減, ,例如:例如:int i=5, j=5, m, n;int i=5, j=5, m, n;m=i+;m=i+; / /后置;相當(dāng)于后置;相當(dāng)于m=i; i=i+1; m=i; i=i+1; / /結(jié)果:結(jié)果:i i的值為的值為6 6,m m的值為的值為5 5; ;n=+j;n=+j; / /前置;相當(dāng)于前置;相當(dāng)于j=j+1;n=j;j=j+1;n=j; / /結(jié)果:結(jié)果:j j的值為的值為6 6,n n的值為的值為6 6; ;意義:使變量當(dāng)前值加意義:使變量當(dāng)前值加1 1或減或減1 1,再賦給該
44、變量。再賦給該變量。要求:操作數(shù)只能是要求:操作數(shù)只能是變量變量,不能是常量或表達(dá)式;,不能是常量或表達(dá)式;ok第58頁/共88頁6.sizeof( ) 運(yùn)算符運(yùn)算符 用于計(jì)算一個(gè)操作數(shù)類型或一個(gè)變量的字用于計(jì)算一個(gè)操作數(shù)類型或一個(gè)變量的字節(jié)數(shù)。一般格式為:節(jié)數(shù)。一般格式為:sizeof (sizeof (數(shù)據(jù)類型數(shù)據(jù)類型) ) 或或 sizeof(sizeof(變量名變量名) ) 例如:例如:sizeof(int) 值為值為4 sizeof( float) 值為值為4double x; sizeof( x) 值為值為8 結(jié)束第59頁/共88頁2.5.2 表達(dá)式表達(dá)式1 算術(shù)表達(dá)式 2 關(guān)系表
45、達(dá)式 3 邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化 4 賦值表達(dá)式與復(fù)合賦值表達(dá)式 5 逗號(hào)表達(dá)式 ok第60頁/共88頁1.算術(shù)表達(dá)式算術(shù)表達(dá)式使用時(shí)注意:使用時(shí)注意:1 1、表達(dá)式中每個(gè)變量都有確定的值時(shí)才能進(jìn)、表達(dá)式中每個(gè)變量都有確定的值時(shí)才能進(jìn)行表達(dá)式求值;行表達(dá)式求值;2 2、考慮到算術(shù)運(yùn)算溢出和精度問題,應(yīng)避免:、考慮到算術(shù)運(yùn)算溢出和精度問題,應(yīng)避免:(1 1)兩個(gè)很接近的數(shù)直接相減;)兩個(gè)很接近的數(shù)直接相減;(2 2)除數(shù)是一個(gè)很小的數(shù);)除數(shù)是一個(gè)很小的數(shù);(3 3)整數(shù)的連續(xù)乘運(yùn)算。)整數(shù)的連續(xù)乘運(yùn)算。ok由算術(shù)運(yùn)算符連接的表達(dá)式稱為算術(shù)表達(dá)式,例如:a+b*3 ;第61頁/共88頁
46、2.關(guān)系表達(dá)式關(guān)系表達(dá)式例如:例如:abcabc / /* *等同于等同于(ab)c(ab)c,先求,先求ab ab 的值,的值, 再將結(jié)果再將結(jié)果0 0或或1 1與與c c比較大小比較大小* */ /a+bc+da+bc+d / /* *等同于等同于(a+b)(c+d)(a+b)(c+d), 結(jié)果為結(jié)果為0 0或或1 1* */ /y=aby=ab / /* *計(jì)算計(jì)算abab的值的值0 0或或1 1 賦給賦給y y,y y的值為的值為0 0或或1 1* */ /由關(guān)系運(yùn)算符連接的表達(dá)式。值為truetrue或falsefalse。ok第62頁/共88頁3.邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化邏
47、輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化由邏輯運(yùn)算符連接的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的由邏輯運(yùn)算符連接的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的值為值為truetrue或或falsefalse。這個(gè)值可對(duì)應(yīng)整數(shù)。這個(gè)值可對(duì)應(yīng)整數(shù)1 1或或0 0參與其他運(yùn)算。參與其他運(yùn)算。ok已知已知: int a=10, b=20, c=30;float x=1.8, y=2.4; ay|ab-!c按按優(yōu)先級(jí)優(yōu)先級(jí)與與結(jié)合性結(jié)合性,其,其求值順序求值順序等同于:等同于:(ay)|(a(b-(!c)t1=1 t2=0t4=0 -&t3=0t5=bt6=1| 得整個(gè)表達(dá)式的值為:得整個(gè)表達(dá)式的值為:1 1第63頁/
48、共88頁3.邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化在求邏輯表達(dá)式值的過程中,一旦表達(dá)式的在求邏輯表達(dá)式值的過程中,一旦表達(dá)式的值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。稱為稱為“求值優(yōu)化求值優(yōu)化”。已知已知: int a=10, b=20, c=30;求:求: ab | c+ /結(jié)果以及結(jié)果以及a,b,c的值的值t1=1整個(gè)表達(dá)式的值為整個(gè)表達(dá)式的值為 1 1可見可見: : 表達(dá)式表達(dá)式 c+ c+ 已不需要計(jì)算已不需要計(jì)算所以所以: : c不變?nèi)詾椴蛔內(nèi)詾?30編程人員在使用邏輯運(yùn)算時(shí)應(yīng)當(dāng)加以小心,優(yōu)化計(jì)算固然編程人員在使用邏輯運(yùn)算時(shí)應(yīng)當(dāng)加以小心,優(yōu)化計(jì)算固然提高
49、了運(yùn)算效率,但可能產(chǎn)生副作用。提高了運(yùn)算效率,但可能產(chǎn)生副作用。所謂副作用,就是所謂副作用,就是出乎設(shè)計(jì)人員的意料,得到預(yù)想不到的結(jié)果。出乎設(shè)計(jì)人員的意料,得到預(yù)想不到的結(jié)果。第64頁/共88頁4.賦值表達(dá)式與復(fù)合賦值表達(dá)式賦值表達(dá)式與復(fù)合賦值表達(dá)式 賦值表達(dá)式的格式為:賦值表達(dá)式的格式為: 變量變量 = = 表達(dá)式表達(dá)式 例如:例如:x=5+6;x=5+6;a=b=c=d+1a=b=c=d+1; ; 在C+C+中,所有的雙目算術(shù)運(yùn)算符和位運(yùn)算符均可與賦值運(yùn)算符組合成一個(gè)單一運(yùn)算符,稱為復(fù)合運(yùn)賦值算符。包括以下1010個(gè):+ = = * = / = % = = &= | = =復(fù)合賦值
50、運(yùn)算符的要求與格式與賦值運(yùn)算符完全相同,復(fù)合賦值運(yùn)算符的要求與格式與賦值運(yùn)算符完全相同,表示為:表示為: 變量變量 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 表達(dá)式表達(dá)式 它等同于它等同于 變量變量 = = 變量變量 運(yùn)算符運(yùn)算符 表達(dá)式表達(dá)式 例如:例如:x+=5x+=5 等同于:等同于:x=x+5x=x+5ok第65頁/共88頁5.逗號(hào)表達(dá)式逗號(hào)表達(dá)式 C+中,逗號(hào)既是分隔符,又是運(yùn)算符,用逗號(hào)連接起來的表達(dá)式稱為逗號(hào)表達(dá)式。 一般格式為:表達(dá)式1,表達(dá)式2,表達(dá)式n 逗號(hào)表達(dá)式中的每一個(gè)表達(dá)式都會(huì)被運(yùn)算,整個(gè)逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值。例如:a=(x=3,x+=6,5+6);/a=11 x=
51、9結(jié)束第66頁/共88頁算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換1 1 不同類型數(shù)據(jù)的混合運(yùn)算不同類型數(shù)據(jù)的混合運(yùn)算 2 2 賦賦 值值 類類 型型 轉(zhuǎn)轉(zhuǎn) 換換 ok運(yùn)算過程中,當(dāng)某個(gè)二元運(yùn)算符兩邊的操作數(shù)類型不同但運(yùn)算過程中,當(dāng)某個(gè)二元運(yùn)算符兩邊的操作數(shù)類型不同但屬于類型相容時(shí),系統(tǒng)先將精度低的操作數(shù)變換到與另一屬于類型相容時(shí),系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進(jìn)行運(yùn)算。操作數(shù)精度相同,而后再進(jìn)行運(yùn)算。 所謂類型相容,指的就是類型不同但系統(tǒng)可以所謂類型相容,指的就是類型不同但系統(tǒng)可以自動(dòng)進(jìn)行轉(zhuǎn)換。自動(dòng)進(jìn)行轉(zhuǎn)換。當(dāng)賦值號(hào)的左值和右值類型不一致但屬于類型相容時(shí),
52、當(dāng)賦值號(hào)的左值和右值類型不一致但屬于類型相容時(shí),由系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換。由系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換。 第67頁/共88頁1.不同類型數(shù)據(jù)的混合運(yùn)算不同類型數(shù)據(jù)的混合運(yùn)算charshortintlongunsigned charunsigned shortunsigned intunsigned longfloatdoublelong double數(shù)據(jù)類型轉(zhuǎn)換方向ok第68頁/共88頁具體規(guī)則如下:具體規(guī)則如下:(1 1)字符字符可以作為可以作為整數(shù)整數(shù)參與數(shù)值運(yùn)算,參與數(shù)值運(yùn)算,整數(shù)值為其整數(shù)值為其ASCIIASCII碼碼。(2 2)操作數(shù)為字符或短整型時(shí),系統(tǒng)自動(dòng)變換成)操作數(shù)為字符或短整型時(shí),
53、系統(tǒng)自動(dòng)變換成整型整型。(3 3)操作數(shù)為實(shí)型時(shí),系統(tǒng)自動(dòng)變換成)操作數(shù)為實(shí)型時(shí),系統(tǒng)自動(dòng)變換成雙精度型雙精度型。(4 4)其余情況,當(dāng)兩操作數(shù)類型不同時(shí),將精度低(或表示范)其余情況,當(dāng)兩操作數(shù)類型不同時(shí),將精度低(或表示范圍小)的操作數(shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)圍?。┑牟僮鲾?shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)行運(yùn)算行運(yùn)算 例如有變量例如有變量: :char c1, c2; int i1, i2; float x1, x2;char c1, c2; int i1, i2; float x1, x2;則表達(dá)式則表達(dá)式x2=c1x2=c1* *i1+c1i1+c1* *x1+
54、c1x1+c1* *c2c2的求值過程為:將的求值過程為:將c1c1轉(zhuǎn)換成整型,完成轉(zhuǎn)換成整型,完成c1c1* *i1i1,結(jié)果表示為,結(jié)果表示為t1t1;將;將c1c1和和x1x1均轉(zhuǎn)換成雙精度型,完成均轉(zhuǎn)換成雙精度型,完成c1c1* *x1x1,結(jié)果表示為,結(jié)果表示為t2t2;將;將c1c1和和c2c2均轉(zhuǎn)換成整型,完成均轉(zhuǎn)換成整型,完成c1c1* *c2c2,結(jié)果表示為,結(jié)果表示為t3t3;然后然后t1t1轉(zhuǎn)換成雙精度型,完成轉(zhuǎn)換成雙精度型,完成t1+t2t1+t2,結(jié)果表示為,結(jié)果表示為t4t4;將;將t3t3轉(zhuǎn)換成雙精度型,完成轉(zhuǎn)換成雙精度型,完成t4+t3t4+t3,最后結(jié)果轉(zhuǎn)為單
55、精度型賦給,最后結(jié)果轉(zhuǎn)為單精度型賦給x2x2。 第69頁/共88頁2.賦值類型轉(zhuǎn)換賦值類型轉(zhuǎn)換結(jié)束系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換規(guī)則:系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換規(guī)則:1 1、實(shí)型數(shù)賦給整形變量:取整;注意溢出;、實(shí)型數(shù)賦給整形變量:取整;注意溢出;2 2、整型數(shù)賦給實(shí)型變量:先轉(zhuǎn)換為實(shí)型數(shù);、整型數(shù)賦給實(shí)型變量:先轉(zhuǎn)換為實(shí)型數(shù);3 3、字符型數(shù)賦給整形變量:、字符型數(shù)賦給整形變量:ASCIIASCII碼為依據(jù);碼為依據(jù);分為兩種情況:符號(hào)位是分為兩種情況:符號(hào)位是0 0或或1 1時(shí)不同;時(shí)不同;若符號(hào)位為若符號(hào)位為1,則低位字節(jié)不變,高位字節(jié)全部置,則低位字節(jié)不變,高位字節(jié)全部置1再賦值。再賦值。4 4、絕對(duì)
56、值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)、絕對(duì)值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)類型時(shí),注意溢出;類型時(shí),注意溢出;第70頁/共88頁2.5.4 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符ok其格式為:其格式為: () () /形式一形式一或或 ()/形式二形式二作用:作用:將表達(dá)式強(qiáng)制轉(zhuǎn)換為將表達(dá)式強(qiáng)制轉(zhuǎn)換為類型,類型, 但表達(dá)式的值及其類型不變。但表達(dá)式的值及其類型不變。任意數(shù)據(jù)類型任意數(shù)據(jù)類型第71頁/共88頁 賦值運(yùn)算中,當(dāng)左值與右值類型不一致時(shí),賦值運(yùn)算中,當(dāng)左值與右值類型不一致時(shí),系統(tǒng)將按照系統(tǒng)將按照左值左值的類型,的類型,自動(dòng)自動(dòng)進(jìn)行強(qiáng)制轉(zhuǎn)換進(jìn)行強(qiáng)制轉(zhuǎn)換。例如例如: : 設(shè)有以下定義設(shè)有以下定義
57、 double x=2.3,y; int i=2,j;(1) jx 22(1) j=x;(2) y=i;由由系統(tǒng)系統(tǒng)按按左值左值j 、y類型類型自動(dòng)自動(dòng)完成強(qiáng)制完成強(qiáng)制轉(zhuǎn)換功能轉(zhuǎn)換功能 (2) y2i2 2.5.4 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符第72頁/共88頁2.5.5 求值次序與副作用求值次序與副作用 ok在符合優(yōu)先級(jí)和結(jié)合性的前提下,C語言的標(biāo)準(zhǔn)對(duì)表達(dá)式中各操作數(shù)的求值次序沒有做統(tǒng)一規(guī)定。 編譯器為提高代碼質(zhì)量,在不影響優(yōu)先級(jí)和結(jié)合性的前提下也要對(duì)操作數(shù)的訪問次序作調(diào)整。在安排順序時(shí),如果某個(gè)操作數(shù)經(jīng)歷了求值運(yùn)算,那么這個(gè)求值可能影響到其他操作數(shù)的值,這時(shí)就會(huì)產(chǎn)生副作用。例如,設(shè)有int a=2,
58、 b=5, c; 對(duì)表達(dá)式c=a*b+(+a)+(b=10)三個(gè)同級(jí)運(yùn)算中,是先算a*b,還是+a,還是b=10,其次再算哪個(gè)?顯然求值次序不同將導(dǎo)致結(jié)果不同。 第73頁/共88頁2.5.6 語句語句1 1 表達(dá)式語句:表達(dá)式語句:表達(dá)式;表達(dá)式; 2 2 空語句:空語句: ; 3 3 復(fù)合語句:復(fù)合語句: / /若干語句若干語句 4 4 流程控制語句:流程控制語句:實(shí)現(xiàn)三種基本結(jié)構(gòu)的語句;實(shí)現(xiàn)三種基本結(jié)構(gòu)的語句; 結(jié)束第74頁/共88頁2.6 簡(jiǎn)單的輸入輸出簡(jiǎn)單的輸入輸出2.6.1 C+C+的輸入輸出的輸入輸出2.6.2 C C語言的輸入輸出語言的輸入輸出ok第75頁/共88頁2.6.1 C
59、+的輸入輸出的輸入輸出cincin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù),用來在程序執(zhí)行期間給變量輸入數(shù)據(jù),一般格式為:一般格式為:cincin變量名變量名1 1變量名變量名22變量名變量名n n; ; coutcout實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,一般格式為:一般格式為:coutcout表達(dá)式表達(dá)式1 1表達(dá)式表達(dá)式22表達(dá)式表達(dá)式n n; ; 同時(shí)必須在程序開頭增加一行:同時(shí)必須在程序開頭增加一行:# include ok第76頁/共88頁1.字符的輸入輸出字符的輸入輸出cin 與cinget( )的區(qū)別(1) cin例如:char c1, c2, c3;cinc1
60、;/Acinc2c3;程序執(zhí)行到A行時(shí),等待用戶輸入數(shù)據(jù)。若輸入:A b c 則cin分別將字符A、b、c賦給變量c1、c2、c3。cin自動(dòng)跳過輸入的自動(dòng)跳過輸入的空白空白字符(包括空格,制表,字符(包括空格,制表,backspacebackspace和回車等)。和回車等)。 ok第77頁/共88頁1.字符的輸入輸出字符的輸入輸出(2)cinget()例如:char c1, c2, c3, c4;cin.get (c1);/Bcin.get (c2);cin.get (c3);程序執(zhí)行到B行時(shí),若輸入:A b則執(zhí)行結(jié)果是:字符A、空格、字符b分別賦給變量c1、c2、c3;輸入行中仍保留回車符。cin.get()把從鍵盤上輸入的所有字符,包括把從鍵盤上輸入的所有字符,包括
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考地理一輪復(fù)習(xí)第七單元自然環(huán)境對(duì)人類活動(dòng)的影響考法精練含解析
- DB42-T 2358-2024 智慧界樁系統(tǒng)技術(shù)與工程建設(shè)規(guī)范
- (3篇)2024-2025年少先隊(duì)工作總結(jié)
- 安全監(jiān)理工作方法
- 二零二五年度品牌VI形象重塑與傳播合同
- 2024年全國(guó)交通安全日活動(dòng)總結(jié)例文(四篇)
- 乒乓球正手攻球技術(shù)教學(xué)設(shè)計(jì)
- 二零二五年度飛機(jī)租賃及航空器改裝合同3篇
- 二零二五版?zhèn)€人水利工程運(yùn)行維護(hù)施工合同2篇
- 2021-2021學(xué)年高中化學(xué)212脂肪烴第2課時(shí)炔烴脂肪烴的來源及應(yīng)用課件新人教版選修5
- 骨科手術(shù)后患者營(yíng)養(yǎng)情況及營(yíng)養(yǎng)不良的原因分析,骨傷科論文
- GB/T 24474.1-2020乘運(yùn)質(zhì)量測(cè)量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實(shí)施方案(一)
- 高血壓患者用藥的注意事項(xiàng)講義課件
- 特種作業(yè)安全監(jiān)護(hù)人員培訓(xùn)課件
- 太平洋戰(zhàn)爭(zhēng)課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
評(píng)論
0/150
提交評(píng)論