《C++語言基礎(chǔ)》全套課件(完整版)
《《C++語言基礎(chǔ)》全套課件(完整版)》由會員分享,可在線閱讀,更多相關(guān)《《C++語言基礎(chǔ)》全套課件(完整版)(497頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、C+概述 C+的特點(diǎn) 發(fā)展歷史和未來 (CC+(AT&T)Java(SUN)C#(MS) 與其它語言比較(7點(diǎn)): 面向?qū)ο蟮母拍?數(shù)據(jù)的封裝和隱藏、繼承、多態(tài) VC上機(jī)過程C+的字符集的字符集26個個小寫字母小寫字母 abcdefghijklmnopqrstuvwxyz 26個個大寫字母大寫字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10個個阿拉伯?dāng)?shù)阿拉伯?dāng)?shù)字字 0 1 2 3 4 5 6 7 8 9 其他符號其他符號 + - * / = , . _ : ; ? | ! # % & () 空格空格 C+語言使用下列基本字符來構(gòu)成詞法單位:語言使用下列基本字符來構(gòu)成詞法單位:結(jié)
2、束第二章: 數(shù)據(jù)類型 運(yùn)算符 表達(dá)式 2.1 VC+ 的數(shù)據(jù)類型計(jì)算機(jī)所處理的數(shù)據(jù)以一定形式存放在內(nèi)計(jì)算機(jī)所處理的數(shù)據(jù)以一定形式存放在內(nèi)存中,數(shù)據(jù)的存儲方式以及能夠進(jìn)行的合存中,數(shù)據(jù)的存儲方式以及能夠進(jìn)行的合法運(yùn)算都與數(shù)據(jù)類型直接相關(guān)。法運(yùn)算都與數(shù)據(jù)類型直接相關(guān)。C+的特的特點(diǎn)之一就是提供了豐富的數(shù)據(jù)類型,以便點(diǎn)之一就是提供了豐富的數(shù)據(jù)類型,以便處理各種不同的數(shù)據(jù)。處理各種不同的數(shù)據(jù)。數(shù)據(jù)類型總是與運(yùn)數(shù)據(jù)類型總是與運(yùn)算封裝在一起,本質(zhì)上是面向?qū)ο蟮?。算封裝在一起,本質(zhì)上是面向?qū)ο蟮?。本本章將簡要介紹章將簡要介紹C+中的數(shù)據(jù)類型及相關(guān)運(yùn)中的數(shù)據(jù)類型及相關(guān)運(yùn)算,以及常量、變量、表達(dá)式、語句等,算,
3、以及常量、變量、表達(dá)式、語句等,最后介紹簡單的輸入輸出方法。最后介紹簡單的輸入輸出方法。 2.1.1 關(guān)鍵字?jǐn)?shù)據(jù)類型說數(shù)據(jù)類型說明符與修飾明符與修飾符符bool char wchar_t class const double enum float int long short signed struct union unsigned void volatile存儲類型說存儲類型說明符明符auto extern inline register static訪問說明符訪問說明符friend private protected public其它說明符其它說明符asm explicit namespa
4、ce operator template this typedef typename using virtual 語句與標(biāo)號語句與標(biāo)號break case catch continue default do else for goto if return switch throw try while 運(yùn)算符及邏運(yùn)算符及邏輯值輯值delete false new sizeof true 還有一些關(guān)鍵字本書未介紹:還有一些關(guān)鍵字本書未介紹: const_cast dynamic_cast reinterpret_cast static_cast export mutable typeid 下面可用
5、一些關(guān)鍵字代替邏輯運(yùn)算符:下面可用一些關(guān)鍵字代替邏輯運(yùn)算符:and and_eq bitand bitorCompl not or or_eqXor xor_eq not_eq2.1.2 標(biāo)識符標(biāo)識符標(biāo)識符(標(biāo)識符(IdentifierIdentifier,ID ID )是程序員定是程序員定義的義的“單詞單詞”,用來給變量、常量、數(shù)據(jù)類型、,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。函數(shù)等命名。合法標(biāo)識符合法標(biāo)識符由由字母或下劃線字母或下劃線開始開始,由,由字母、字母、數(shù)字、下劃線數(shù)字、下劃線組成,其有效組成,其有效長度為長度為1 13131個字個字符符,長度超過,長度超過3131個字符者只識別
6、個字符者只識別前前3131個字符個字符,VC+VC+標(biāo)識符長度為標(biāo)識符長度為1 1247247個字符。個字符。建議使用有一定含義的英文單詞或拼音序建議使用有一定含義的英文單詞或拼音序列作標(biāo)識符,以提高列作標(biāo)識符,以提高可讀性可讀性;另外盡量不用下;另外盡量不用下劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵字沖突。字沖突。ok標(biāo)識符標(biāo)識符例例: 判斷下面哪些是合法的標(biāo)識符:判斷下面哪些是合法的標(biāo)識符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student2.1.2結(jié)束2.1.3 標(biāo)
7、點(diǎn)符號標(biāo)點(diǎn)符號標(biāo)點(diǎn)符號包括標(biāo)點(diǎn)符號包括:#、( )、 ,、,、 :、:、 ;、;、 、 等。等。 標(biāo)點(diǎn)符號的作用標(biāo)點(diǎn)符號的作用:有一定的語法意義。如字符和字符串有一定的語法意義。如字符和字符串常量分別用常量分別用 和和 “ ”引起來。引起來。對語法符號起分隔作用。如對語法符號起分隔作用。如 ;等;等2.1.3結(jié)束2.1.5 C+的基本數(shù)據(jù)類型的基本數(shù)據(jù)類型圖圖2-1 C+的的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)實(shí)實(shí) 型型 float雙精度型雙精度型 doubleC+的數(shù)的數(shù)據(jù)類型據(jù)類型基本數(shù)據(jù)基本數(shù)據(jù)類型類型非基本數(shù)非基本數(shù)據(jù)類型據(jù)類型數(shù)組數(shù)組 type 指針指針 type *結(jié)構(gòu)結(jié)構(gòu) struct聯(lián)合聯(lián)合 un
8、ion枚舉枚舉 enum類類 class整整 型型 int字符型字符型 char邏輯型邏輯型 bool無值型無值型 void實(shí)實(shí) 型型ok C+C+對基本數(shù)據(jù)類型也分別進(jìn)行了封裝,稱對基本數(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)行編譯。的
9、原則,以便編譯器進(jìn)行編譯。 整型整型用來存放整數(shù),整數(shù)(有符號的整數(shù))用來存放整數(shù),整數(shù)(有符號的整數(shù))在內(nèi)存中存放的是它的補(bǔ)碼,無符號數(shù)沒有符在內(nèi)存中存放的是它的補(bǔ)碼,無符號數(shù)沒有符號位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與號位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與機(jī)型有關(guān),機(jī)型有關(guān),3232位機(jī)上占用位機(jī)上占用4 4個字節(jié)。個字節(jié)。 字符型字符型用來保存字符,存儲的是該字符的用來保存字符,存儲的是該字符的ASCIIASCII碼,碼,占用一個字節(jié)。如大寫字母占用一個字節(jié)。如大寫字母A A的的ASCIIASCII碼為碼為6565,在對應(yīng)的,在對應(yīng)的一個字節(jié)中存放的就是一個字節(jié)中存放的就是6565。
10、字符型數(shù)據(jù)從本質(zhì)上說也是。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個整數(shù),可以是任何一個8 8位二進(jìn)制整數(shù)。位二進(jìn)制整數(shù)。 由于漢語系字符很多,用由于漢語系字符很多,用ASCIIASCII字符集處理遠(yuǎn)遠(yuǎn)不夠,字符集處理遠(yuǎn)遠(yuǎn)不夠,因此又創(chuàng)立了雙字節(jié)字符集(因此又創(chuàng)立了雙字節(jié)字符集(DBCSDBCS:double-byte double-byte character setcharacter set),每個字符用兩個字節(jié)來編碼。為便于),每個字符用兩個字節(jié)來編碼。為便于軟件的國際化,國際上一些知名公司聯(lián)合制定了新的寬軟件的國際化,國際上一些知名公司聯(lián)合制定了新的寬字節(jié)字符標(biāo)準(zhǔn)字節(jié)字符標(biāo)準(zhǔn)Unic
11、odeUnicode。該標(biāo)準(zhǔn)中所有字符都是雙字。該標(biāo)準(zhǔn)中所有字符都是雙字節(jié)的,不同的語言和字符集分別占用其中一段代碼。這節(jié)的,不同的語言和字符集分別占用其中一段代碼。這種用統(tǒng)一編碼處理西文、中文及其它語言符號,就是種用統(tǒng)一編碼處理西文、中文及其它語言符號,就是unicodeunicode碼。碼。C+C+同時也支持寬字符類型(同時也支持寬字符類型(wchar_twchar_t),或),或稱雙字節(jié)字符型稱雙字節(jié)字符型。 實(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ù)存放,
12、包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位位機(jī)上實(shí)型為機(jī)上實(shí)型為23位(因規(guī)范化數(shù)的數(shù)碼最高位恒為位(因規(guī)范化數(shù)的數(shù)碼最高位恒為1,不必,不必存儲,實(shí)際為存儲,實(shí)際為24位),雙精度為位),雙精度為52位。位。 邏輯型邏輯型也稱也稱布爾型布爾型,其取值為,其取值為true(邏輯真)和(邏輯真)和false(邏(邏輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,VC+6.0中為中為1個字節(jié)。布爾型在運(yùn)算中可以和整型相互轉(zhuǎn)個字節(jié)。布爾型在運(yùn)算中可以和整型相互轉(zhuǎn)化,化,false對應(yīng)為對應(yīng)為0,t
13、rue對應(yīng)為對應(yīng)為1或非或非0無值型無值型主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。具體介紹。 基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、(有符號)、unsigned(無符號)、(無符號)、long(長)、(長)、short(短)。參見下表:(短)。參見下表:2. 2結(jié)束 類類 型型名名 稱稱占用字節(jié)數(shù)占用字節(jié)數(shù)取取 值值 范范 圍圍bool布爾型布爾型 true, false(signed) char有符號字符型有符號字符型1-128 127unsiged char無符號字符
14、型無符號字符型10 255(signed) short (int)有符號短整型有符號短整型2-32768 32767unsigned short (int)無符號短整型無符號短整型20 65535(signed) int (signed)有符號整型有符號整型4-231 (231-1)unsigned (int)無符號整型無符號整型40 (232-1)(signed) long (int)有符號長整型有符號長整型4-231 (231-1)unsigned long (int)無符號長整型無符號長整型40 (232-1)float實(shí)型實(shí)型4-1038 1038double雙精度型雙精度型8-103
15、08 10308long double長雙精度型長雙精度型8-10308 10308void無值型無值型0無值無值VC+中所有基本數(shù)據(jù)類型所有基本數(shù)據(jù)類型2.1.6 常量 在程序的執(zhí)行過程中,值保持不變的量稱為 常量字面常量字面常量,指程序中直接給出的量;,指程序中直接給出的量;常量的值在程序執(zhí)行過程中保持不變;并常量的值在程序執(zhí)行過程中保持不變;并且且存儲在程序區(qū)存儲在程序區(qū),而非數(shù)據(jù)區(qū);,而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為以下根據(jù)取值和表示方法的不同,可分為以下幾種:幾種:a. a. 整形常量整形常量d. d. 字符串常量字符串常量c. c. 字符型常量字符型常量b. b. 實(shí)型
16、常量實(shí)型常量oka整型常量十進(jìn)制十進(jìn)制表示表示法法八進(jìn)制表示法八進(jìn)制表示法十六進(jìn)制表示法十六進(jìn)制表示法其他表示法其他表示法即整數(shù),可以有多種表示方法:ok 整數(shù)的十進(jìn)制表示方法十進(jìn)制表示與我們熟悉的書寫方式相同。十進(jìn)制表示與我們熟悉的書寫方式相同。如如15 -24ok 整數(shù)的八進(jìn)制表示 八進(jìn)制表示八進(jìn)制表示以以0 0開始,由數(shù)字開始,由數(shù)字0 0 7 7組成組成,用來,用來表示一個八進(jìn)制數(shù)。表示一個八進(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 整數(shù)
17、的十六進(jìn)制表示 十六進(jìn)制十六進(jìn)制以以0X0X(大小寫均可)開始,由數(shù)(大小寫均可)開始,由數(shù)字字0 0 9 9和字母和字母A A F F(大小寫均可)組成(大小寫均可)組成,用來,用來表示一個十六進(jìn)制數(shù)。表示一個十六進(jìn)制數(shù)。以下是一些以下是一些常整數(shù)常整數(shù)的例子:的例子:0 x32A /0 x32A /十六進(jìn)制數(shù)十六進(jìn)制數(shù)32A32A,即十進(jìn)制數(shù),即十進(jìn)制數(shù)810810-0 x2fe0 /-0 x2fe0 /十六進(jìn)制數(shù)十六進(jìn)制數(shù)-2fe0-2fe0, /即十進(jìn)制數(shù)即十進(jìn)制數(shù)-12256-12256ok整數(shù)的其他表示方法 整型常量還可以表示整型常量還可以表示長整數(shù)長整數(shù)和和無符號整數(shù)無符號整數(shù)。
18、長整型常數(shù)以長整型常數(shù)以 L L 或或 l l 結(jié)尾,無符號常整數(shù)以結(jié)尾,無符號常整數(shù)以 U U 或或 u u 結(jié)尾,以結(jié)尾,以 U LU L 或或 L UL U(大小寫均可)(大小寫均可)結(jié)尾則可表示無符號長整型常數(shù)。結(jié)尾則可表示無符號長整型常數(shù)。例如:例如:-84L-84L/十進(jìn)制長整數(shù)十進(jìn)制長整數(shù)-84-84026U026U/八進(jìn)制表示的無符號整數(shù)八進(jìn)制表示的無符號整數(shù)26260X32LU /0X32LU /十六進(jìn)制表示的無符號長整型數(shù)十六進(jìn)制表示的無符號長整型數(shù)3232。整數(shù) 結(jié)束 b實(shí)型常量( (1)1)一般形式一般形式與平時書寫形式相同,與平時書寫形式相同,由數(shù)字由數(shù)字 0 0 9
19、 9和小數(shù)點(diǎn)組成和小數(shù)點(diǎn)組成。例如:。例如:0.23 -125.76 0.0 .46 -35.0.23 -125.76 0.0 .46 -35.(2) (2) 指數(shù)形式(也稱為科學(xué)表示法)指數(shù)形式(也稱為科學(xué)表示法)表示為表示為尾尾數(shù)乘以數(shù)乘以1010的次方形式,由的次方形式,由尾數(shù)尾數(shù)、E E或或e e和和階數(shù)階數(shù)組組成成。指數(shù)形式要求在。指數(shù)形式要求在E E或或e e前面的前面的尾數(shù)部分必須尾數(shù)部分必須有數(shù)字有數(shù)字,后面的,后面的指數(shù)部分必須為整數(shù)指數(shù)部分必須為整數(shù)。 例例 : : 判斷下列表示是否合法判斷下列表示是否合法123E12 -.34e-2 E4 1.43E3.5 包含小數(shù)點(diǎn)和包
20、含小數(shù)點(diǎn)和1010的冪的數(shù)為實(shí)型常量,有的冪的數(shù)為實(shí)型常量,有兩種表示方法:兩種表示方法:實(shí)數(shù)實(shí)數(shù) 結(jié)束結(jié)束c字符型常量 字符常量是用單引號引起來的單個字符字符常量是用單引號引起來的單個字符。在。在內(nèi)存中保存的是字符的內(nèi)存中保存的是字符的ASCIIASCII碼值。在所有字符碼值。在所有字符中,有些是可顯示字符,通常就用單引號引起中,有些是可顯示字符,通常就用單引號引起來表示:來表示:a a /字符字符a a /字符字符 44/字符字符4 4 /空格字符空格字符有些是特殊情況字符,如不可顯示的字符等,有些是特殊情況字符,如不可顯示的字符等,c+c+使用使用轉(zhuǎn)義序列轉(zhuǎn)義序列表示方法,如表示方法,如
21、(祥見表祥見表2-32-3,此處略):此處略):n n /換行換行 / / 字符字符 字符常字符常 結(jié)束結(jié)束 d. 字符串常量字符串常量與字符型常量的區(qū)別字符串常量與字符型常量的區(qū)別字符串常量字符串常量aa占兩個字節(jié),存放占兩個字節(jié),存放aa和和 0 0,值為,值為0 x61000 x6100字符型常量字符型常量aa占一個字節(jié),存放占一個字節(jié),存放aa,值為,值為0 x610 x612.3.2結(jié)束結(jié)束用雙引號引起來的若干個字符稱為字符串常量用雙引號引起來的若干個字符稱為字符串常量。例如例如:I am a Chinese.,123, a ,:I am a Chinese.,123, a , 2
22、標(biāo)識符常量及常量說明符const用常量說明符用常量說明符constconst給字面常量起個名字(標(biāo)識符),給字面常量起個名字(標(biāo)識符),這個標(biāo)識符就稱為這個標(biāo)識符就稱為標(biāo)識符常量標(biāo)識符常量;因?yàn)闃?biāo)識符常量的說明和引用形式很像變量,所以也因?yàn)闃?biāo)識符常量的說明和引用形式很像變量,所以也稱稱常變量常變量;例如:;例如:constconst float PI=3.14159; float PI=3.14159;const const int Number_of_Student=100; int Number_of_Student=100;常變量必須也只能在說明時進(jìn)行初始化;常變量必須也只能在說明時進(jìn)行
23、初始化;常變量初始化之后,不允許再被賦值;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量必須先說明后使用;常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進(jìn)行類型檢查。系統(tǒng)對常變量進(jìn)行類型檢查。C+C+建議使用常變量,而盡量不使用字面常量。建議使用常變量,而盡量不使用字面常量。2.3.3 結(jié)束結(jié)束2.1.7 變 量1 1 變量說明變量說明 2 2 變量賦初值變量賦初值 變量變量,在程序中是指可以改變值的量;,在程序中是指可以改變值的量;變量必須用標(biāo)識符進(jìn)行標(biāo)識,稱為變量必須用標(biāo)識符進(jìn)行標(biāo)識,稱為變量名變量名;變量有變量有
24、類型類型之分,如整形變量、字符變量等;之分,如整形變量、字符變量等;任何變量都必須任何變量都必須先說明后使用先說明后使用;一是便于編譯;一是便于編譯程序?yàn)樽兞糠峙淇臻g,二是便于編譯時進(jìn)行語程序?yàn)樽兞糠峙淇臻g,二是便于編譯時進(jìn)行語法檢查;法檢查;變量使用的第一步,是給變量賦變量使用的第一步,是給變量賦初始值初始值;ok1 變量說明 在在C+C+中,變量說明的一般格式為:中,變量說明的一般格式為:存儲類型存儲類型數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1 1, ,變量名變量名2, 2, , ,變量名變量名n n; 下面是變量說明的幾個例子:下面是變量說明的幾個例子:int i, j, k; /說明三個整型變
25、量說明三個整型變量i, j, kfloat x, y, z; /說明三個實(shí)型變量說明三個實(shí)型變量x, y, zchar c1, c2; /說明兩個字符型變量說明兩個字符型變量c1, c2double dx; /說明一個雙精度型變量說明一個雙精度型變量dx 變量說明 結(jié)束 2 變量賦初值(1 1)變量說明時直接賦初值。變量說明時直接賦初值。例如:例如:int a=3, b=4, c=5;int a=3, b=4, c=5;float x=3.0float x=3.0;(2 2)用賦值語句賦初值。用賦值語句賦初值。嚴(yán)格的說,只有前嚴(yán)格的說,只有前者可稱賦初值者可稱賦初值例如:例如:float x,
26、 e;float x, e;x=3.5; x=3.5; e=2.71828;e=2.71828;結(jié)束 給變量賦初值稱為初始化,有兩種方法:給變量賦初值稱為初始化,有兩種方法:2.2 基本運(yùn)算符 對常量和變量進(jìn)行運(yùn)算是通過運(yùn)算符來實(shí)現(xiàn)的對常量和變量進(jìn)行運(yùn)算是通過運(yùn)算符來實(shí)現(xiàn)的. 常量和常量和變量通過運(yùn)算符組成變量通過運(yùn)算符組成C+表達(dá)式表達(dá)式,由表達(dá)式再組成由表達(dá)式再組成C+語句語句. 運(yùn)算符是完成對運(yùn)算符是完成對常量和變量進(jìn)行運(yùn)算的符號常量和變量進(jìn)行運(yùn)算的符號. 把參與運(yùn)把參與運(yùn)算的對象稱為操作數(shù)算的對象稱為操作數(shù).按照要求的操作數(shù)的個數(shù),運(yùn)算符分為按照要求的操作數(shù)的個數(shù),運(yùn)算符分為單目單目(
27、一元)運(yùn)算(一元)運(yùn)算符、符、雙目雙目(二元)運(yùn)算符和(二元)運(yùn)算符和三目三目(三元)運(yùn)算符。(三元)運(yùn)算符。單目運(yùn)單目運(yùn)算符算符只對一個操作數(shù)運(yùn)算,如負(fù)號運(yùn)算符只對一個操作數(shù)運(yùn)算,如負(fù)號運(yùn)算符“ ”等;等;雙目雙目運(yùn)算符運(yùn)算符要求有兩個操作數(shù),如乘號運(yùn)算符要求有兩個操作數(shù),如乘號運(yùn)算符“*”等;等;三目三目運(yùn)算符運(yùn)算符要求有三個操作數(shù),三元運(yùn)算符只有一個要求有三個操作數(shù),三元運(yùn)算符只有一個“?:”。1.算術(shù)運(yùn)算符優(yōu)先級優(yōu)先級運(yùn)算符運(yùn)算符名名 稱稱3+正,單目正,單目 -負(fù),單目負(fù),單目5*乘,雙目乘,雙目 /除,雙目除,雙目 %求余,雙目求余,雙目6+加,雙目加,雙目 -減,雙目減,雙目ok
28、運(yùn)算符重載運(yùn)算符重載:當(dāng)兩個操作數(shù)均為整數(shù)時,當(dāng)兩個操作數(shù)均為整數(shù)時,* *和和/ /重載為重載為整乘整乘和和整除整除,結(jié)果為整數(shù),除法運(yùn)算后舍去小數(shù)取整。如:結(jié)果為整數(shù),除法運(yùn)算后舍去小數(shù)取整。如:5/45/4/結(jié)果為結(jié)果為1 1,整數(shù),整數(shù)當(dāng)兩個操作數(shù)均為整數(shù),當(dāng)兩個操作數(shù)均為整數(shù),%定義為定義為求余求余運(yùn)算,也運(yùn)算,也稱求模運(yùn)算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如稱求模運(yùn)算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中有負(fù)數(shù),則先用兩數(shù)絕對值求余,果兩個整數(shù)中有負(fù)數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的最后結(jié)果的符號與被除數(shù)相同符號與被除數(shù)相同。例如。例如6%3/結(jié)果為結(jié)果為06%7/結(jié)果為結(jié)果為
29、67%6/結(jié)果為結(jié)果為1 C+ C+中算術(shù)運(yùn)算應(yīng)注意數(shù)據(jù)溢出問題,即運(yùn)算中算術(shù)運(yùn)算應(yīng)注意數(shù)據(jù)溢出問題,即運(yùn)算結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會編譯程序只會對除法運(yùn)算時除數(shù)為對除法運(yùn)算時除數(shù)為0 0這種情況提示出錯,這種情況提示出錯,而特別而特別容易溢出的整數(shù)的加、減和乘法運(yùn)算產(chǎn)生溢出的情容易溢出的整數(shù)的加、減和乘法運(yùn)算產(chǎn)生溢出的情況,系統(tǒng)不作為錯誤處理,程序?qū)⒗^續(xù)執(zhí)行并產(chǎn)生況,系統(tǒng)不作為錯誤處理,程序?qū)⒗^續(xù)執(zhí)行并產(chǎn)生錯誤的計(jì)算結(jié)果。因此,程序設(shè)計(jì)者必須在程序中錯誤的計(jì)算結(jié)果。因此,程序設(shè)計(jì)者必須在程序中解決檢查并處理整數(shù)溢出問題。解決檢查并處理整數(shù)溢出
30、問題。 只要有一個操作數(shù)是實(shí)數(shù),兩個操作數(shù)均轉(zhuǎn)只要有一個操作數(shù)是實(shí)數(shù),兩個操作數(shù)均轉(zhuǎn)換為換為doubledouble型,型,*和和/重載為普通的重載為普通的乘和除乘和除,結(jié),結(jié)果果是實(shí)數(shù)是實(shí)數(shù):5/4.05/4.0/結(jié)果為結(jié)果為1.251.25,實(shí)數(shù),實(shí)數(shù)2.關(guān)系運(yùn)算符和邏輯運(yùn)算符ok 關(guān)系運(yùn)算符都是二元運(yùn)算符,包括:關(guān)系運(yùn)算符都是二元運(yùn)算符,包括: (大于)、(大于)、(不小于)、(不小于)、 (小于)、(小于)、(不小于)、(不小于)、= = =(等于)和?。ǖ扔冢┖停? =(不等于)。關(guān)系運(yùn)算符完成兩個操作數(shù)大小的比較,結(jié)(不等于)。關(guān)系運(yùn)算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值果為邏
31、輯值true(true(真真) )或或falsefalse(假)(假)。每種。每種可比較大小可比較大小的數(shù)的數(shù)據(jù)類型,都據(jù)類型,都重載重載了關(guān)系運(yùn)算符。不同類型,自動轉(zhuǎn)換為同了關(guān)系運(yùn)算符。不同類型,自動轉(zhuǎn)換為同一類型后,采用對應(yīng)關(guān)系運(yùn)算符進(jìn)行比較。一類型后,采用對應(yīng)關(guān)系運(yùn)算符進(jìn)行比較。在在C+中這兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對中這兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對應(yīng)應(yīng)1,假對應(yīng),假對應(yīng)0;反過來,;反過來,0對應(yīng)假,非對應(yīng)假,非0整數(shù)對應(yīng)真。整數(shù)對應(yīng)真。所所以關(guān)系運(yùn)算結(jié)果可以作為整數(shù)參與算術(shù)運(yùn)算、關(guān)系運(yùn)算、以關(guān)系運(yùn)算結(jié)果可以作為整數(shù)參與算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算及其他運(yùn)算。邏
32、輯運(yùn)算及其他運(yùn)算。2.關(guān)系運(yùn)算符和邏輯運(yùn)算符設(shè)有定義設(shè)有定義 float a=3.2;int b=5; ;則則: : 3ab/結(jié)果是結(jié)果是?根據(jù)右結(jié)合根據(jù)右結(jié)合原則其運(yùn)算原則其運(yùn)算過程如下:過程如下:a5b3.23F, 即即0F即即0優(yōu)優(yōu)先先級級運(yùn)運(yùn)算算符符名名 稱稱語語 義義2!邏輯非邏輯非, 單目單目操作數(shù)的值為真,則結(jié)操作數(shù)的值為真,則結(jié)果為假果為假;12&邏輯與邏輯與,雙目雙目當(dāng)兩個操作數(shù)全為真時,當(dāng)兩個操作數(shù)全為真時,結(jié)果為真,否則為假結(jié)果為真,否則為假;13|邏輯或邏輯或,雙目雙目兩個操作數(shù)中有一個為兩個操作數(shù)中有一個為真,則結(jié)果為真真,則結(jié)果為真;邏輯運(yùn)算符邏輯運(yùn)算符 邏輯運(yùn)算符
33、用來進(jìn)行邏輯運(yùn)算。其操作數(shù)和運(yùn)邏輯運(yùn)算符用來進(jìn)行邏輯運(yùn)算。其操作數(shù)和運(yùn)算結(jié)果均為算結(jié)果均為邏輯量邏輯量。運(yùn)算結(jié)果同樣可以作為一個。運(yùn)算結(jié)果同樣可以作為一個整整數(shù)數(shù)參與其他運(yùn)算。參與其他運(yùn)算。 由于由于邏輯值邏輯值和和整數(shù)整數(shù)之間的之間的對應(yīng)關(guān)系,對應(yīng)關(guān)系,也允許也允許整型整型和和字符型字符型操作數(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)算符3. 位運(yùn)
34、算符(1)按位取反運(yùn)算符)按位取反運(yùn)算符“” (2)左移運(yùn)算符)左移運(yùn)算符“” (4)按位與運(yùn)算符)按位與運(yùn)算符“&” (5)按位或運(yùn)算符)按位或運(yùn)算符“|” (6)按位異或運(yùn)算符)按位異或運(yùn)算符“” okc+c+語言提供字位運(yùn)算,它對操作數(shù)的各個位進(jìn)行操作。語言提供字位運(yùn)算,它對操作數(shù)的各個位進(jìn)行操作。(1 1)按位取反運(yùn)算符)按位取反運(yùn)算符“ ”將操作數(shù)的每個二進(jìn)制位取反,即將操作數(shù)的每個二進(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)左移
35、運(yùn)算符)左移運(yùn)算符“”運(yùn)算一般格式為:運(yùn)算一般格式為:ana”與左移運(yùn)算符類同,將左操作數(shù)向右移動右操作數(shù)指定的與左移運(yùn)算符類同,將左操作數(shù)向右移動右操作數(shù)指定的二進(jìn)制位數(shù),忽略移位后的小數(shù)部分,并在高位補(bǔ)二進(jìn)制位數(shù),忽略移位后的小數(shù)部分,并在高位補(bǔ)0 0。一。一個整數(shù)右移個整數(shù)右移n n位相當(dāng)于位相當(dāng)于除以除以2 2的的n n次方,但比除法快。次方,但比除法快。 在在VC+6.0VC+6.0中有符號數(shù)右移時高位補(bǔ)符號位,嚴(yán)格對應(yīng)除中有符號數(shù)右移時高位補(bǔ)符號位,嚴(yán)格對應(yīng)除法。法。以上三種單目運(yùn)算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一以上三種單目運(yùn)算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一個中間量,這個中間量
36、被引用后即不再存在。個中間量,這個中間量被引用后即不再存在。 (4 4)按位與運(yùn)算符)按位與運(yùn)算符“& &”將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位邏輯與運(yùn)算。運(yùn)算規(guī)則將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位邏輯與運(yùn)算。運(yùn)算規(guī)則為:對應(yīng)位均為為:對應(yīng)位均為1 1時,該位運(yùn)算結(jié)果為時,該位運(yùn)算結(jié)果為1 1;否則為;否則為0 0。例如:。例如:a 01001101a 01001101b 00001111b 00001111a & b 00001101a & b 00001101該運(yùn)算可用來將整數(shù)的某些位置該運(yùn)算可用來將整數(shù)的某些位置0 0,而保留所需要的位,上例,而保留所需要的位,上例保留了低四位。保留了低四位。
37、(5 5)按位或運(yùn)算符)按位或運(yùn)算符“| |”將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位邏輯或運(yùn)算。運(yùn)算規(guī)則將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位邏輯或運(yùn)算。運(yùn)算規(guī)則為:只要有一個數(shù)對應(yīng)位為為:只要有一個數(shù)對應(yīng)位為1 1,該位運(yùn)算結(jié)果即為,該位運(yùn)算結(jié)果即為1 1;兩個數(shù);兩個數(shù)對應(yīng)位均為對應(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。(6
38、 6)按位異或運(yùn)算符)按位異或運(yùn)算符“ ”將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位異或運(yùn)算。運(yùn)算規(guī)則為:將兩個操作數(shù)的對應(yīng)位逐一進(jìn)行按位異或運(yùn)算。運(yùn)算規(guī)則為:當(dāng)對應(yīng)位的值不同時,該位運(yùn)算結(jié)果為當(dāng)對應(yīng)位的值不同時,該位運(yùn)算結(jié)果為1 1,否則為,否則為0 0。例如:。例如:a 01001101a 01001101b 00001111b 00001111a b 01000010a b 01000010該運(yùn)算符可用來將一個整數(shù)的某些位取反,或?qū)⒄妥兞康脑撨\(yùn)算符可用來將一個整數(shù)的某些位取反,或?qū)⒄妥兞康闹抵弥抵? 0(將整型變量與自身按位異或)。上例低四位取反,(將整型變量與自身按位異或)。上例低四位取反,
39、高四位不變。高四位不變。需要說明的一點(diǎn)是,以上例子中的整數(shù)都只取了低需要說明的一點(diǎn)是,以上例子中的整數(shù)都只取了低8 8位一個位一個字節(jié)。字節(jié)。4.賦值運(yùn)算符ok 將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為賦值賦值,如果,如果該單元中已有值,賦值操作以新值取代舊值;從該單元中已有值,賦值操作以新值取代舊值;從某個存儲單元中取出數(shù)據(jù)使用,稱為引用,引用某個存儲單元中取出數(shù)據(jù)使用,稱為引用,引用不影響單元中的值,即一個量可以多次引用。不影響單元中的值,即一個量可以多次引用。常常量量只能引用,不能賦值。只能引用,不能賦值。 賦值通過賦值運(yùn)算符賦值通過賦值運(yùn)算符“=”來完成,其意義是將
40、來完成,其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是等號,它具有方向性賦值號不是等號,它具有方向性。 C+C+將變量名代表的單元稱為將變量名代表的單元稱為 “左值左值”,而將變,而將變量的值稱為量的值稱為“右值右值”。 左值必須是內(nèi)存中一個左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象可以訪問且可以合法修改的對象,因此只能是變,因此只能是變量名,量名,而不能是常量或表達(dá)式而不能是常量或表達(dá)式。4.賦值運(yùn)算符例如下面的賦值運(yùn)算是錯誤的:例如下面的賦值運(yùn)算是錯誤的:3.1415926=pi;/左值不能是常數(shù)左值不能是常數(shù)x+y=z;/左
41、值不能是表達(dá)式左值不能是表達(dá)式const int N=30;N=40;/左值不能是常變量左值不能是常變量5.自增自減運(yùn)算運(yùn)算分前置和后置兩種,運(yùn)算分前置和后置兩種,前置是先增減后引用前置是先增減后引用,即先,即先對變量自加或自減,用新的值參與其他運(yùn)算;對變量自加或自減,用新的值參與其他運(yùn)算;后置則后置則是先引用后增減是先引用后增減,即用變量原來的值參與其他運(yùn)算,即用變量原來的值參與其他運(yùn)算,然后再對變量進(jìn)行自加或自減然后再對變量進(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;
42、 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,再賦給該變量。再賦給該變量。要求:操作數(shù)只能是要求:操作數(shù)只能是變量變量,不能是常量或表達(dá)式;,不能是常量或表達(dá)式;ok6. sizeof( ) 運(yùn)算符 用于計(jì)算一個操作數(shù)類型或一個變量的字用于計(jì)算一個操作數(shù)類型或一個變量的字節(jié)數(shù)。一般格式為:節(jié)數(shù)。一般格
43、式為:sizeof (sizeof (數(shù)據(jù)類型數(shù)據(jù)類型) ) 或或 sizeof(sizeof(變量名變量名) ) 例如:例如:sizeof(int) 值為值為4 sizeof( float) 值為值為4double x; sizeof( x) 值為值為8 結(jié)束結(jié)束2.2.2 表達(dá)式1 算術(shù)表達(dá)式算術(shù)表達(dá)式 2 關(guān)系表達(dá)式關(guān)系表達(dá)式 3 邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化 4 賦值表達(dá)式與復(fù)合賦值表達(dá)式賦值表達(dá)式與復(fù)合賦值表達(dá)式 5 逗號表達(dá)式逗號表達(dá)式 ok1.算術(shù)表達(dá)式使用時注意:使用時注意:1 1、表達(dá)式中每個變量都有確定的值時才能進(jìn)、表達(dá)式中每個變量都有確
44、定的值時才能進(jìn)行表達(dá)式求值;行表達(dá)式求值;2 2、考慮到算術(shù)運(yùn)算溢出和精度問題,應(yīng)避免:、考慮到算術(shù)運(yùn)算溢出和精度問題,應(yīng)避免:(1 1)兩個很接近的數(shù)直接相減;)兩個很接近的數(shù)直接相減;(2 2)除數(shù)是一個很小的數(shù);)除數(shù)是一個很小的數(shù);(3 3)整數(shù)的連續(xù)乘運(yùn)算。)整數(shù)的連續(xù)乘運(yùn)算。ok由算術(shù)運(yùn)算符連接的表達(dá)式稱為算術(shù)表達(dá)式由算術(shù)運(yùn)算符連接的表達(dá)式稱為算術(shù)表達(dá)式,例如:例如:a+b*3 ;2.關(guān)系表達(dá)式例如:例如:abcabc / /* *等同于等同于(ab)c(ab)c,先求,先求ab ab 的值,的值, 再將結(jié)果再將結(jié)果0 0或或1 1與與c c比較大小比較大小* */ /a+bc+d
45、a+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á)式。值為由關(guān)系運(yùn)算符連接的表達(dá)式。值為truetrue或或falsefalse。ok3.邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化由邏輯運(yùn)算符連接的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的由邏輯運(yùn)算符連接的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的值為值為truetrue或或falsefalse。這個值可對應(yīng)整數(shù)。這個值可對應(yīng)整數(shù)1 1或或0
46、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)先級優(yōu)先級與與結(jié)合性結(jié)合性,其,其求值順序求值順序等同于:等同于:(ay)|(a(b-(!c)t1=1 t2=0t4=0 -&t3=0t5=bt6=1| 得整個表達(dá)式的值為:得整個表達(dá)式的值為:1 13.邏輯表達(dá)式和邏輯表達(dá)式求值的優(yōu)化在求邏輯表達(dá)式值的過程中,一旦表達(dá)式的在求邏輯表達(dá)式值的過程中,一旦表達(dá)式的值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。稱為稱為“求值優(yōu)化求值優(yōu)化”。已知已知: int a=10,
47、b=20, c=30;求:求: ab | c+ /結(jié)果以及結(jié)果以及a,b,c的值的值t1=1整個表達(dá)式的值為整個表達(dá)式的值為 1 1可見可見: : 表達(dá)式表達(dá)式 c+ c+ 已不需要計(jì)算已不需要計(jì)算所以所以: : c不變?nèi)詾椴蛔內(nèi)詾?30編程人員在使用邏輯運(yùn)算時應(yīng)當(dāng)加以小心,優(yōu)化計(jì)算固然編程人員在使用邏輯運(yùn)算時應(yīng)當(dāng)加以小心,優(yōu)化計(jì)算固然提高了運(yùn)算效率,但可能產(chǎn)生副作用。提高了運(yùn)算效率,但可能產(chǎn)生副作用。所謂副作用,就是所謂副作用,就是出乎設(shè)計(jì)人員的意料,得到預(yù)想不到的結(jié)果。出乎設(shè)計(jì)人員的意料,得到預(yù)想不到的結(jié)果。4.賦值表達(dá)式與復(fù)合賦值表達(dá)式 賦值表達(dá)式的格式為:賦值表達(dá)式的格式為: 變量變量
48、 = = 表達(dá)式表達(dá)式 例如:例如:x=5+6;x=5+6;a=b=c=d+1a=b=c=d+1; ; 在在C+C+中,所有的雙目算術(shù)運(yùn)算符和位運(yùn)算符均可與中,所有的雙目算術(shù)運(yùn)算符和位運(yùn)算符均可與賦值運(yùn)算符組合成一個單一運(yùn)算符,稱為賦值運(yùn)算符組合成一個單一運(yùn)算符,稱為復(fù)合運(yùn)賦值復(fù)合運(yùn)賦值算符算符。包括以下。包括以下1010個:個:+ = = * = / = % = = &= | = =復(fù)合賦值運(yùn)算符的要求與格式與賦值運(yùn)算符完全相同,復(fù)合賦值運(yùn)算符的要求與格式與賦值運(yùn)算符完全相同,表示為:表示為: 變量變量 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 表達(dá)式表達(dá)式 它等同于它等同于 變量變量 = = 變量變量
49、 運(yùn)算符運(yùn)算符 表達(dá)式表達(dá)式 例如:例如:x+=5x+=5 等同于:等同于:x=x+5x=x+5ok5. 逗號表達(dá)式 C+中,逗號既是分隔符,又是運(yùn)算符,中,逗號既是分隔符,又是運(yùn)算符,用逗號連接起來的表達(dá)式稱為逗號表達(dá)式。用逗號連接起來的表達(dá)式稱為逗號表達(dá)式。 一般格式為:一般格式為:表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2,表達(dá)式,表達(dá)式n 逗號表達(dá)式中的每一個表達(dá)式都會被運(yùn)算,逗號表達(dá)式中的每一個表達(dá)式都會被運(yùn)算,整個逗號表達(dá)式的值為最后一個表達(dá)式的值整個逗號表達(dá)式的值為最后一個表達(dá)式的值。例如:例如:a=(x=3,x+=6,5+6);/a=11 x=92.5.2結(jié)束結(jié)束2.2.3不同類型數(shù)據(jù)的
50、混合運(yùn)算和賦值時的類型轉(zhuǎn)換1 1 不同類型數(shù)據(jù)的混合運(yùn)算不同類型數(shù)據(jù)的混合運(yùn)算 2 2 賦賦 值值 類類 型型 轉(zhuǎn)轉(zhuǎn) 換換 ok運(yùn)算過程中,當(dāng)某個二元運(yùn)算符兩邊的操作數(shù)類型不同但運(yùn)算過程中,當(dāng)某個二元運(yùn)算符兩邊的操作數(shù)類型不同但屬于類型相容時,系統(tǒng)先將精度低的操作數(shù)變換到與另一屬于類型相容時,系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進(jìn)行運(yùn)算。操作數(shù)精度相同,而后再進(jìn)行運(yùn)算。 所謂類型相容,指的就是類型不同但系統(tǒng)可以所謂類型相容,指的就是類型不同但系統(tǒng)可以自動進(jìn)行轉(zhuǎn)換。自動進(jìn)行轉(zhuǎn)換。當(dāng)賦值號的左值和右值類型不一致但屬于類型相容時,當(dāng)賦值號的左值和右值類型不一致但屬于類型相容時,由
51、系統(tǒng)自動進(jìn)行類型轉(zhuǎn)換。由系統(tǒng)自動進(jìn)行類型轉(zhuǎn)換。 具體規(guī)則如下:具體規(guī)則如下:(1 1)字符字符可以作為可以作為整數(shù)整數(shù)參與數(shù)值運(yùn)算,參與數(shù)值運(yùn)算,整數(shù)值為其整數(shù)值為其ASCIIASCII碼碼。(2 2)操作數(shù)為字符或短整型時,系統(tǒng)自動變換成)操作數(shù)為字符或短整型時,系統(tǒng)自動變換成整型整型。(3 3)操作數(shù)為實(shí)型時,系統(tǒng)自動變換成)操作數(shù)為實(shí)型時,系統(tǒng)自動變換成雙精度型雙精度型。(4 4)其余情況,當(dāng)兩操作數(shù)類型不同時,將精度低(或表示范)其余情況,當(dāng)兩操作數(shù)類型不同時,將精度低(或表示范圍小)的操作數(shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)圍?。┑牟僮鲾?shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)
52、行運(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+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)換成
53、整型,完成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)為單精度型賦給,最后結(jié)果轉(zhuǎn)為單精度型賦給x2x2。 2.賦值類型轉(zhuǎn)換2.5.3結(jié)束結(jié)束系統(tǒng)自動進(jìn)行類型轉(zhuǎn)換規(guī)則:系統(tǒ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ù)賦給整形變量:、字符
54、型數(shù)賦給整形變量:ASCIIASCII碼為依據(jù);碼為依據(jù);分為兩種情況:符號位是分為兩種情況:符號位是0 0或或1 1時不同;時不同;若符號位為若符號位為1,則低位字節(jié)不變,高位字節(jié)全部置,則低位字節(jié)不變,高位字節(jié)全部置1再賦值。再賦值。4 4、絕對值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)、絕對值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)類型時,注意溢出;類型時,注意溢出;2.5.4 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符ok其格式為:其格式為: () () /形式一形式一或或 ()/形式二形式二作用:作用:將表達(dá)式強(qiáng)制轉(zhuǎn)換為將表達(dá)式強(qiáng)制轉(zhuǎn)換為類型,類型, 但表達(dá)式的值及其類型不變。但表達(dá)式的值及其類型不變。任意數(shù)據(jù)類型任意數(shù)據(jù)類型
55、 賦值運(yùn)算中,當(dāng)左值與右值類型不一致時,賦值運(yùn)算中,當(dāng)左值與右值類型不一致時,系統(tǒng)將按照系統(tǒng)將按照左值左值的類型,的類型,自動自動進(jìn)行強(qiáng)制轉(zhuǎn)換進(jìn)行強(qiáng)制轉(zhuǎn)換。例如例如: : 設(shè)有以下定義設(shè)有以下定義 double x=2.3,y; int i=2,j;(1) j2.3x2.3 22(1) j=x;(2) y=i;由由系統(tǒng)系統(tǒng)按按左值左值j 、y類型類型自動自動完成強(qiáng)制完成強(qiáng)制轉(zhuǎn)換功能轉(zhuǎn)換功能 (2) y2i2 2.02.02.5.4 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符第三章: 簡單輸入/輸出 3.1 cin cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù),用來在程序執(zhí)行期間給變量輸入數(shù)據(jù), 一般格式為:一般格式為: c
56、in變量名變量名1變量名變量名2變量名變量名n; cout實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作, 一般格式為:一般格式為: cout表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2表達(dá)式表達(dá)式n; 同時必須在程序開頭增加一行:同時必須在程序開頭增加一行: # include 3.1.1十進(jìn)制數(shù)據(jù)的輸入輸出請看下例:請看下例:int i, j; float x, y;cout”Input i, j, x, y:”ij;/Dcinxy;cout”i=”it”j=”jendl;cout”x+y=”x+yendl; 若輸入:若輸入:10 20 4.5 8.6 則程序輸出:則程序輸出:i=10j=20
57、 x+y=13.1輸出時各數(shù)據(jù)間是無間隔的,因此應(yīng)當(dāng)有意輸出一些輸出時各數(shù)據(jù)間是無間隔的,因此應(yīng)當(dāng)有意輸出一些間隔符間隔符 ok 3.1.2 輸入字符數(shù)據(jù)輸入字符數(shù)據(jù) cin 與與cin.get( )的區(qū)別的區(qū)別 (1) cin 例如例如:char c1, c2, c3;cinc1;/Acinc2c3; 程序執(zhí)行到程序執(zhí)行到A行時,等待用戶輸入數(shù)據(jù)。行時,等待用戶輸入數(shù)據(jù)。 若輸入:若輸入:A b c 則則cin分別將字符分別將字符A、b、c賦給變量賦給變量c1、c2、c3。 cin自動跳過輸入的自動跳過輸入的空白空白字符(包括空格,制字符(包括空格,制表,表,backspace和回車等)。和
58、回車等)。 (2)cin.get() 例如:例如: char c1, c2, c3, c4;cin.get (c1);/Bcin.get (c2);cin.get (c3); 程序執(zhí)行到程序執(zhí)行到B行時,若輸入:行時,若輸入:A b 則執(zhí)行結(jié)果是:字符則執(zhí)行結(jié)果是:字符A、空格、字符、空格、字符b分別賦給變量分別賦給變量c1、c2、c3;輸入行中仍;輸入行中仍保留回車符。保留回車符。cin.get()把從鍵盤上輸入的把從鍵盤上輸入的所有字符,包括所有字符,包括空白空白字符,都作為輸入字符,都作為輸入字符賦給字符變量字符賦給字符變量 關(guān)于字符的輸出,請看下例,假定字符關(guān)于字符的輸出,請看下例,假
59、定字符c1、c2、c3的值分別為字符的值分別為字符a、b和和c,執(zhí)行以下語句,執(zhí)行以下語句序列:序列: coutc1tc2n; coutc3endl; coutOkendl; 屏幕上將輸出:屏幕上將輸出: ab c Ok 輸出時字符之間是無間隔的,如果想讓字符間輸出時字符之間是無間隔的,如果想讓字符間有間隔,必須輸出間隔符有間隔,必須輸出間隔符 補(bǔ)充.字符串輸入輸出向一個字符數(shù)組中輸入字符串時,用函數(shù)向一個字符數(shù)組中輸入字符串時,用函數(shù)getline() 。getline() 以用戶按下回車鍵作為結(jié)以用戶按下回車鍵作為結(jié)束,在此之前的所有輸入都放入字符數(shù)組中:束,在此之前的所有輸入都放入字符數(shù)
60、組中:cin.getline (char ,int)其中第一個參數(shù)是已經(jīng)定義的字符數(shù)組名,第其中第一個參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個參數(shù)是讀入字符的最多個數(shù)二個參數(shù)是讀入字符的最多個數(shù)n(包括字符(包括字符串結(jié)束符串結(jié)束符/0)。)。ok常用常用cout輸出字符串。雙引號中的字符串常量輸出字符串。雙引號中的字符串常量照原樣輸出,程序中通常通過輸出字符串常量照原樣輸出,程序中通常通過輸出字符串常量來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符。符前所有字符。補(bǔ)充:字符串輸入輸出函數(shù)保證在執(zhí)行時總會為字符串的結(jié)束符保函數(shù)保證在執(zhí)行時總會為字符串的結(jié)
61、束符保留一個字節(jié)。當(dāng)鍵盤的輸入字符(字節(jié))數(shù)留一個字節(jié)。當(dāng)鍵盤的輸入字符(字節(jié))數(shù)多于多于(n1)時,后面的字符不會進(jìn)入字符數(shù)組,時,后面的字符不會進(jìn)入字符數(shù)組,字符串結(jié)束符自動加在字符數(shù)組的最后一個字符串結(jié)束符自動加在字符數(shù)組的最后一個字節(jié)中。當(dāng)輸入字符數(shù)少于該值時,字符串字節(jié)中。當(dāng)輸入字符數(shù)少于該值時,字符串結(jié)束符自動加在輸入到字符數(shù)組中的最后一結(jié)束符自動加在輸入到字符數(shù)組中的最后一個字符的后面。請看下例:個字符的后面。請看下例:char city11;cin.getline(city, 10); / 輸入城市名最多輸入城市名最多5個中文字個中文字cout “城市名:城市名:“ city
62、endl;ok如果要求按八進(jìn)制或十六進(jìn)制輸入輸出,在如果要求按八進(jìn)制或十六進(jìn)制輸入輸出,在cincin或或coutcout中中必須指明相應(yīng)的數(shù)據(jù)形式,必須指明相應(yīng)的數(shù)據(jù)形式,octoct為八進(jìn)制,為八進(jìn)制,hexhex為十六進(jìn)為十六進(jìn)制,制,decdec為十進(jìn)制。為十進(jìn)制。例如:例如:int i, j, k, l;cout”Input i(oct), j(hex), k(hex), l(dec):” oct i;/輸入為八進(jìn)制數(shù)輸入為八進(jìn)制數(shù)cin hex j;/輸入為十六進(jìn)制數(shù)輸入為十六進(jìn)制數(shù)cin k;/輸入仍為十六進(jìn)制數(shù)輸入仍為十六進(jìn)制數(shù)cin dec l;/輸入為十進(jìn)制數(shù)輸入為十進(jìn)制數(shù)
63、cout” hex:” i=” hex i endl;cout” dec:” j=” dec jt;cout” k=” k endl;cout” oct:” l=” oct l;cout dec endl; /恢復(fù)十進(jìn)制輸出狀態(tài)恢復(fù)十進(jìn)制輸出狀態(tài)ok輸入輸出的格式控制(1)各種進(jìn)制數(shù)據(jù)的輸入輸出執(zhí)行時輸出:執(zhí)行時輸出:Input i(oct), j(hex), k(hex), l(dec):此時從鍵盤輸入:此時從鍵盤輸入:032 0 x3f 0 xa0 17 則輸出結(jié)果為:則輸出結(jié)果為:hex:i=1adec:j=63k=160oct:l=21由于已經(jīng)在由于已經(jīng)在cincin中指明數(shù)制,因此從
64、鍵盤輸入時,八進(jìn)制中指明數(shù)制,因此從鍵盤輸入時,八進(jìn)制和十六進(jìn)制數(shù)可以省略其開頭的和十六進(jìn)制數(shù)可以省略其開頭的0 0和和0 x0 x標(biāo)志。標(biāo)志。 在在cincin或或coutcout中指明數(shù)制后,該數(shù)制將一直有效,直到中指明數(shù)制后,該數(shù)制將一直有效,直到重新指明用其他數(shù)制。重新指明用其他數(shù)制。特別注意:特別注意:輸入數(shù)據(jù)的輸入數(shù)據(jù)的格式、個數(shù)和類型格式、個數(shù)和類型必須與必須與cincin中的中的變量一一對應(yīng),否則不僅使輸入數(shù)據(jù)錯誤,而且影響后變量一一對應(yīng),否則不僅使輸入數(shù)據(jù)錯誤,而且影響后面其他數(shù)據(jù)的正確輸入。面其他數(shù)據(jù)的正確輸入。輸入輸出的格式控制為了使數(shù)據(jù)間隔開,還可以用為了使數(shù)據(jù)間隔開,
65、還可以用C+C+提供的函數(shù)提供的函數(shù)setw() setw() 指定指定輸出數(shù)據(jù)項(xiàng)的寬度。例如:輸出數(shù)據(jù)項(xiàng)的寬度。例如:int i=2, j=3;float x=2.6, y=1.8; cout setw(6) i setw(10) j endl;cout setw(10) i*j endl;cout setw(8) x setw(8) y endl;輸出結(jié)果為:輸出結(jié)果為: 2 3 6 2.6 1.8 使用使用setw() setw() 必須在程序的開始處增加:必須在程序的開始處增加:#include #include ok(2)設(shè)置數(shù)據(jù)間隔第第4 4章章 流程控制語句流程控制語句4.1 選
66、擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì) 對程序的運(yùn)行流程進(jìn)行控制,主要通過執(zhí)行對程序的運(yùn)行流程進(jìn)行控制,主要通過執(zhí)行專門用來控制流程的語句來實(shí)現(xiàn)。流程控制語句專門用來控制流程的語句來實(shí)現(xiàn)。流程控制語句也稱為過程化語句。也稱為過程化語句。分支語句分支語句是三種基本流程控是三種基本流程控制語句之一。制語句之一。C+C+提供以下三種分支語句:提供以下三種分支語句: if 語句語句 條件運(yùn)算符條件運(yùn)算符 “ ? : ” swith 語句語句 4.2.1 if 語句語句if語句有兩種基本格式為:語句有兩種基本格式為: 1、if () ;2、if () else; if 語句語句【例例41】 輸入一個年份,判斷是否閏年。輸入一個年份,判斷是否閏年。算法分析算法分析:假定年份為假定年份為year, 閏年的條件是閏年的條件是 : year%4=0&year%100!=0|year%400=0。#include void main( )int year;cout輸入年份輸入年份:year;if (year%4=0&year%100!=0|year%400=0)coutyear是閏年是閏年endl;else co
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版五上《小數(shù)乘整數(shù)》ppt課件
- 蘇教版一年級數(shù)學(xué)上冊《數(shù)一數(shù)》ppt課件
- 江南1優(yōu)秀課件
- 提高印字質(zhì)量課件
- 服務(wù)分銷策略課件
- 數(shù)學(xué)必修蘇教版互斥事件課件3(共32張PPT)
- 第三章要素費(fèi)用的核算PPT優(yōu)秀資料
- 元素的質(zhì)量分?jǐn)?shù)計(jì)算答案
- 圖形的欣賞與設(shè)計(jì)
- 八年級下期Uuit10SectionA課件
- 部編七年級語文下冊4孫權(quán)勸學(xué)課件
- 部編一年級語文下冊端午粽課件
- 超市防損的技能課件
- 表彰班會教學(xué)課件教學(xué)課件
- 第17講中考數(shù)學(xué)專題復(fù)習(xí) 函數(shù)的綜合應(yīng)用中考數(shù)學(xué)專題復(fù)習(xí)課件課件各版通用