版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1l C+ 語言:教材教材: 吳乃陵,況迎輝. C+程序設(shè)計(第二版). 高等教育出版社,2006年1月.參考教材:Stanley B Lippman , J o s e L a j o i e 著,李師賢 蔣愛軍等 譯. 深入C+系列:C+ Primer中文版(第4版),中國電力出版社, 2002年1月.l Visual C+:教材教材:侯俊杰著. 深入淺出MFC(第2版). 華中科技大學(xué)出版社, 2001年1月.參考教材:孫鑫編著.VC+深入詳解. 電子工業(yè)出版社,2012年9月.主講教師:李長河院 系:計算機(jī)學(xué)院Email:課程主頁: http:/ 切實掌握各章主要內(nèi)容(預(yù)習(xí)/聽課/消化
2、/歸納) 在預(yù)習(xí)的基礎(chǔ)上,聽課為主,筆記為輔,課后弄懂課件和 教材中的程序(會分析,能流利寫出)課下:每個星期4個小時的上機(jī),不會編寫程序=沒有學(xué)習(xí)CCUG ACM online test platform:注冊帳號(id班級+序號,例1911301),完成里面所有課后編程題目 http:/ 平時成績(作業(yè)、書面/上機(jī)、考勤)+考試4本章將簡要介紹本章將簡要介紹C+C+中的數(shù)據(jù)類型及相關(guān)運算,中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、表達(dá)式、語句等,最后介紹簡以及常量、變量、表達(dá)式、語句等,最后介紹簡單的輸入輸出方法。單的輸入輸出方法。第一章第一章 C+基礎(chǔ)知識基礎(chǔ)知識5第一章第一章 C+基礎(chǔ)知
3、識基礎(chǔ)知識1.3 C+的詞法單位的詞法單位1.6 運算符和表達(dá)式運算符和表達(dá)式1.8 簡單的輸入輸出簡單的輸入輸出1.7 數(shù)組與字符數(shù)組數(shù)組與字符數(shù)組1.5 常量和變量常量和變量1.4 C+ 中的數(shù)據(jù)類型中的數(shù)據(jù)類型ok1.1 C+語言概述語言概述 1.2 一個一個C+程序?qū)嵗绦驅(qū)嵗?種類:種類: 機(jī)器語言機(jī)器語言 低級語言低級語言 匯編語言匯編語言 (面向計算機(jī)面向計算機(jī)) BASIC 入門語言入門語言 F77科學(xué)計算科學(xué)計算 高級語言高級語言 Foxpro 數(shù)據(jù)庫管理數(shù)據(jù)庫管理 (面向問題面向問題 ) C/C+ 多用途多用途 計算機(jī)語言加法:加法:100000100000加法:加法:AD
4、DADD加法:加法:+ +1.1 C語言概述語言概述 71.1 C語言概述語言概述 歷史:歷史:C+C+是由是由C C語言為基礎(chǔ)發(fā)展起來的。語言為基礎(chǔ)發(fā)展起來的。C C語言是作為語言是作為UNIXUNIX操作系統(tǒng)的開發(fā)語言為人操作系統(tǒng)的開發(fā)語言為人們所認(rèn)識。七十年代末,們所認(rèn)識。七十年代末,C C語言開始移植到非語言開始移植到非UNIXUNIX環(huán)境中,并逐步脫離環(huán)境中,并逐步脫離UNIXUNIX系統(tǒng)成為一種獨系統(tǒng)成為一種獨立的程序設(shè)計語言。立的程序設(shè)計語言。19881988年美國國家標(biāo)準(zhǔn)協(xié)會年美國國家標(biāo)準(zhǔn)協(xié)會ANSIANSI對對C C語言進(jìn)行語言進(jìn)行了標(biāo)準(zhǔn)化,產(chǎn)生了了標(biāo)準(zhǔn)化,產(chǎn)生了ANSI C
5、ANSI C。81.1 C 語言概述語言概述 (1 1)C C語言既具備高級語言的結(jié)構(gòu)和編程環(huán)境,又提語言既具備高級語言的結(jié)構(gòu)和編程環(huán)境,又提供類似于匯編語言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效供類似于匯編語言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效率。率。適合解決有實時要求的問題(火車調(diào)度)。適合解決有實時要求的問題(火車調(diào)度)。C語言的主要特點:(2 2)有豐富的運算符和數(shù)據(jù)類型,表達(dá)式類型多樣)有豐富的運算符和數(shù)據(jù)類型,表達(dá)式類型多樣化,可以方便地實現(xiàn)在其他語言中較難實現(xiàn)的運算,對各化,可以方便地實現(xiàn)在其他語言中較難實現(xiàn)的運算,對各種不同類型的程序設(shè)計都有良好的適應(yīng)性。種不同類型的程序設(shè)計都有良
6、好的適應(yīng)性。(3 3)以函數(shù)為基礎(chǔ)實現(xiàn)程序的結(jié)構(gòu)化設(shè)計,支持大)以函數(shù)為基礎(chǔ)實現(xiàn)程序的結(jié)構(gòu)化設(shè)計,支持大型程序的多文件構(gòu)成及單個文件獨立編譯,適合大型復(fù)型程序的多文件構(gòu)成及單個文件獨立編譯,適合大型復(fù)雜程序的設(shè)計。雜程序的設(shè)計。(4)語言簡潔、緊湊,使用方便、靈活。)語言簡潔、緊湊,使用方便、靈活。(5)可移植性好。)可移植性好。91.1 C 語言概述語言概述 C+C+是由是由C C發(fā)展成為的以面向?qū)ο鬄橹饕卣鞯恼Z發(fā)展成為的以面向?qū)ο鬄橹饕卣鞯恼Z言。作為言。作為C C語言的超集,語言的超集,C+C+繼承了繼承了C C的所有優(yōu)點,又的所有優(yōu)點,又對數(shù)據(jù)類型做了擴(kuò)充,使得編譯系統(tǒng)可以檢查出更多
7、對數(shù)據(jù)類型做了擴(kuò)充,使得編譯系統(tǒng)可以檢查出更多類型錯誤。類型錯誤。C+C+支持面向?qū)ο蟪绦蛟O(shè)計,通過類和對象的概念支持面向?qū)ο蟪绦蛟O(shè)計,通過類和對象的概念把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,通過派生、繼承、,通過派生、繼承、重載和多態(tài)性等特征實現(xiàn)了軟件重用和程序自動生成,重載和多態(tài)性等特征實現(xiàn)了軟件重用和程序自動生成,使得大型復(fù)雜軟件的構(gòu)造和維護(hù)變得更加有效和容易。使得大型復(fù)雜軟件的構(gòu)造和維護(hù)變得更加有效和容易。C+C+語言的主要特點:語言的主要特點:101.1 C 語言概述語言概述 C+C+與與C C完全兼容,很多用完全兼容,很多用C C編寫的庫函數(shù)和編寫的庫函數(shù)和
8、應(yīng)用程序都可以為應(yīng)用程序都可以為C+C+所用。所用。但正是由于與但正是由于與C C兼容,使得兼容,使得C+C+不是純正的面不是純正的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,也支持面向過程設(shè)計。但我們應(yīng)當(dāng)注意用面向也支持面向過程設(shè)計。但我們應(yīng)當(dāng)注意用面向?qū)ο蟮乃枷脒M(jìn)行設(shè)計,以發(fā)揮出對象的思想進(jìn)行設(shè)計,以發(fā)揮出C+C+的優(yōu)勢。的優(yōu)勢。C+C+語言的兼容性:語言的兼容性:1.2 一個一個C+程序?qū)嵗绦驅(qū)嵗阎獔A柱體的地面半徑和高分別是6cm和12cm,求圓柱體體積。數(shù)學(xué)解法數(shù)學(xué)解法:解:設(shè)半徑為r,高為h,體積為v。則r=6cm,h=12cm,答:圓柱體體
9、積為1356.48cm3。【例例1.1】 一個簡單的一個簡單的C+程序。程序。3248.1356126614.3cmhrPIvint main() float r,h,v; coutrh; /r=6;h=12; v=getVolume(r,h); coutthe volume is v cbccmendl; return 0;#include /格式化輸入輸出流#define PI 3.14 / 宏定義float getVolume(float x,float y)return PI*x*x*y;預(yù)編譯指令C+程序解法程序解法:函數(shù)定義開發(fā)環(huán)境:Windows:visual studio 6.
10、0Linux:GCC131.2 一個一個C+程序?qū)嵗绦驅(qū)嵗? include int max(int i, int j) /A if (i=j) return i; else return j; int main(void) /B coutij; /從鍵盤上輸入變量值從鍵盤上輸入變量值 coutmax number is:max(i, j) n ; /輸出提示和結(jié)果輸出提示和結(jié)果 return 0;【例例1.2】 一個簡單的一個簡單的C+程序。程序。程序組成:程序組成:注釋注釋編譯預(yù)處理指令編譯預(yù)處理指令程序體程序體由若干函數(shù)組成,由若干函數(shù)組成,其中有且僅有一個主函其中有且僅有一個主函數(shù)數(shù)
11、main(),這是程(),這是程序的執(zhí)行入口。在序的執(zhí)行入口。在Windows編程中定義編程中定義為為winmain()。()。下面進(jìn)入下面進(jìn)入VC+ 運行運行141.3 C+的詞法單位的詞法單位1.3.1 C+的字符集的字符集 1.3.2 關(guān)鍵字關(guān)鍵字 1.3.3 標(biāo)識符標(biāo)識符(ID,identifier) 1.3.4 標(biāo)點符號標(biāo)點符號 ok151.3.1 C+的字符集的字符集ASCII碼碼字符集是計算機(jī)中的常用字符集。字符集是計算機(jī)中的常用字符集。它包括英文字母及阿拉伯?dāng)?shù)字等它包括英文字母及阿拉伯?dāng)?shù)字等128個字符,個字符,存儲一個存儲一個ASCII碼碼占用一個字節(jié)占用一個字節(jié)單元。單元。
12、漢字國標(biāo)碼漢字國標(biāo)碼用于漢字處理。國標(biāo)碼的存用于漢字處理。國標(biāo)碼的存儲占用兩個字節(jié)單元。儲占用兩個字節(jié)單元。Unicode字符集對各類字符進(jìn)行字符集對各類字符進(jìn)行統(tǒng)一的雙統(tǒng)一的雙字節(jié)編碼字節(jié)編碼。它包括了世界上多種語言的基本。它包括了世界上多種語言的基本字符,字符,最多可容納最多可容納65536個個字符。字符。 ASCII碼碼字符集,國標(biāo)碼字符集都是它的子集。字符集,國標(biāo)碼字符集都是它的子集。ok常用字符集:常用知識:v位(bit,b):度量數(shù)據(jù)的最小單位,表示一位二進(jìn)制信息。v字節(jié)(byte,B):由八位二進(jìn)制數(shù)字組成(1 byte = 8 bit)。 1111 010117C+的字符集的字
13、符集C+C+語言基本字符:語言基本字符:181.3.2 關(guān)關(guān) 鍵鍵 字字關(guān)鍵字(keyword):又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用(太陽)。C+區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準(zhǔn)C+(ISO14882)定義了74個關(guān)鍵字,具體的C+編譯器會做一些增刪。常用關(guān)鍵字及分類見表2.1。ok19 關(guān)關(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 volati
14、le存儲類型說存儲類型說明符明符auto extern inline register static訪問說明符訪問說明符friend private protected public其它說明符其它說明符asm explicit namespace 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 運算符及邏運算符及邏輯值輯值delete false n
15、ew sizeof true表表2-1 C+2-1 C+常用關(guān)鍵字及分類常用關(guān)鍵字及分類 ok20 關(guān)關(guān) 鍵鍵 字字211.3.3 標(biāo)識符標(biāo)識符標(biāo)識符(標(biāo)識符(IdentifierIdentifier,ID ID ):):是程序員定義的是程序員定義的“單詞單詞”,用來給變量、,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。常量、數(shù)據(jù)類型、函數(shù)等命名。合法標(biāo)識符合法標(biāo)識符由由字母或下劃線字母或下劃線開始開始,由,由字母、字母、數(shù)字、下劃線數(shù)字、下劃線組成,其有效組成,其有效長度為長度為1 13131個字個字符符,長度超過,長度超過3131個字符者只識別個字符者只識別前前3131個字符個字符,VC+VC
16、+標(biāo)識符長度為標(biāo)識符長度為1 1247247個字符。個字符。建議使用有一定含義的英文單詞或拼音序建議使用有一定含義的英文單詞或拼音序列作標(biāo)識符,以提高列作標(biāo)識符,以提高可讀性可讀性;另外盡量不用下;另外盡量不用下劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵字沖突。字沖突。ok22標(biāo)識符標(biāo)識符例例: 判斷下面哪些是合法的標(biāo)識符:判斷下面哪些是合法的標(biāo)識符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student231.3.4 標(biāo)點符號標(biāo)點符號標(biāo)點符號標(biāo)點符號: :#、( )、 ,、
17、:、 ;、 、 等。等。 標(biāo)點符號的作用標(biāo)點符號的作用: :有一定的語法意義。如字符和字符串有一定的語法意義。如字符和字符串常量分別用常量分別用 和和 “ ”引起來。引起來。對語法符號起分隔作用。如對語法符號起分隔作用。如 ;等等a,hello241.4 C+中的數(shù)據(jù)類型中的數(shù)據(jù)類型圖圖2-1 C+的的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)實實 型型 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)合 union枚舉枚舉 enum類類 class整整 型型 int字符型字符型 c
18、har邏輯型邏輯型 bool無值型無值型 void實實 型型ok四要素:1.名字2.內(nèi)存空間3.范圍4.操作25 C+C+基本數(shù)據(jù)類型稱為基本數(shù)據(jù)類型稱為內(nèi)置數(shù)據(jù)類型內(nèi)置數(shù)據(jù)類型,內(nèi)置,內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,還定義了還定義了常用操常用操作作。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用操作將在后面介紹。操作將在后面介紹。 C+C+為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從“先說明后使用先說明后使用”的原則,的原則,以便編譯器進(jìn)行編譯以便編譯器進(jìn)行編譯(檢查語法,分配內(nèi)存空間)。(檢查語法,分配
19、內(nèi)存空間)。 整型:整型:用來存放整數(shù),整數(shù)(有符號的整用來存放整數(shù),整數(shù)(有符號的整數(shù))在內(nèi)存中存放的是它的補(bǔ)碼,無符號數(shù)沒數(shù))在內(nèi)存中存放的是它的補(bǔ)碼,無符號數(shù)沒有符號位,存放的就是原碼。整數(shù)占用的字節(jié)有符號位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與機(jī)型有關(guān),數(shù)與機(jī)型有關(guān),3232位機(jī)上占用位機(jī)上占用4 4個字節(jié)。個字節(jié)。 內(nèi)置數(shù)據(jù)類型:內(nèi)置數(shù)據(jù)類型:1.原碼v符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進(jìn)制: +1原 = 0000 0001 -1原 = 1000 0001v第一位是符號位. 因為第一位是符號位, 所以8位二進(jìn)制數(shù)的取值范圍就是: 1111
20、1111 , 0111 1111 即 -127 , 127v2. 反碼v正數(shù)的反碼是其本身v負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上, 符號位不變,其余各個位取反. +1 = 00000001原 = 00000001反 -1 = 10000001原 = 11111110反v3. 補(bǔ)碼v正數(shù)的補(bǔ)碼就是其本身v負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎(chǔ)上+1)+1 = 00000001原 = 00000001反 = 00000001補(bǔ)-1 = 10000001原 = 11111110反 = 11111111補(bǔ)課下思考:為什么引入補(bǔ)碼?提示:1.分別用原碼,反碼,
21、補(bǔ)碼方式計算1-1=?2. 1000 0000表示的十進(jìn)制數(shù)值?例:int i=-10;0 00 0 0 0 1 0 1 010的原碼1 11 1 1 1 0 1 0 1取反1 11 1 1 1 0 1 1 0再加1,得10的補(bǔ)碼10/2=5 余數(shù)05/2=2 余數(shù)12/2=1 余數(shù)01/2= 0 余數(shù)110的二進(jìn)制:1010 課下查找資料:如何將十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)?補(bǔ)充知識:30 字符型:字符型:用來保存字符,存儲的是該字符用來保存字符,存儲的是該字符的的ASCIIASCII碼,占用一個字節(jié)。如大寫字母碼,占用一個字節(jié)。如大寫字母A A的的ASCIIASCII碼為碼為6565,在對應(yīng)的
22、一個字節(jié)中存放的就是,在對應(yīng)的一個字節(jié)中存放的就是6565。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個何一個8 8位二進(jìn)制整數(shù)。位二進(jìn)制整數(shù)。C+C+同時也支持寬字符類同時也支持寬字符類型(型(wchar_twchar_t),或稱雙字節(jié)字符型。),或稱雙字節(jié)字符型。 實型:實型:單精度單精度和和雙精度型雙精度型都用來存放實數(shù),都用來存放實數(shù),兩者表示的實數(shù)精度不同。實數(shù)在內(nèi)存中以規(guī)范兩者表示的實數(shù)精度不同。實數(shù)在內(nèi)存中以規(guī)范化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),精度取決于尾數(shù)的位數(shù),3
23、2位機(jī)上實型為位機(jī)上實型為23位位(因規(guī)范化數(shù)的數(shù)碼最高位恒為(因規(guī)范化數(shù)的數(shù)碼最高位恒為1,不必存儲,不必存儲,實際精度為實際精度為24位),雙精度為位),雙精度為52位。位。 31邏輯型:邏輯型:也稱也稱布爾型布爾型,其取值為,其取值為true(邏輯真)(邏輯真)和和false(邏輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)(邏輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,中可能有所不同,VC+6.0中為中為1個字節(jié)。布爾型個字節(jié)。布爾型在運算中可以和整型相互轉(zhuǎn)化,在運算中可以和整型相互轉(zhuǎn)化,false對應(yīng)為對應(yīng)為0,true對應(yīng)為對應(yīng)為1或非或非0無值型:無值型:主要用來說明函數(shù)的返回值類型,將主
24、要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。在函數(shù)一章中具體介紹。 基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、(有符號)、unsigned(無符號)、(無符號)、long(長)、(長)、short(短)。參見下表:(短)。參見下表:32類類 型型名名 稱稱占用字節(jié)數(shù)占用字節(jié)數(shù)取取 值值 范范 圍圍bool布爾型布爾型 1true, false(signed) char有符號字符型有符號字符型1-128 127unsiged char無符號字符型無符號字符型10 255(signed) short (int)有符號短整型有符號
25、短整型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實型實型4-1038 1038double雙精度型雙精度型8-10308 10308long double長雙精度型長雙精度型8-10308 10308
26、void無值型無值型0無值無值VC+中所有基本數(shù)據(jù)類型所有基本數(shù)據(jù)類型331.5 常量和變量1.5.1 變 量1.5.2 文字常量1.5.3 常變量在程序中,常量和變量是用來表示數(shù)據(jù)的;在程序中,常量和變量是用來表示數(shù)據(jù)的;常量又分為字面常量、常變量;常量又分為字面常量、常變量;ok341.5.1 變 量1 1 變量說明變量說明 2 2 變量初始化值變量初始化值 變量變量/對象對象,在程序中是指可以改變值的量;,在程序中是指可以改變值的量;變量必須用變量必須用標(biāo)識符標(biāo)識符進(jìn)行標(biāo)識,稱為進(jìn)行標(biāo)識,稱為變量名變量名;變量有變量有類型類型之分,如整型變量、字符變量等;之分,如整型變量、字符變量等;任
27、何變量都必須任何變量都必須先定義后使用先定義后使用;一是便于編譯;一是便于編譯程序為變量分配空間,二是便于編譯時進(jìn)行語程序為變量分配空間,二是便于編譯時進(jìn)行語法檢查;法檢查;變量使用的第一步,是給變量賦變量使用的第一步,是給變量賦初始值初始值;ok35變量定義 在在C+C+中,變量定義的一般格式為:中,變量定義的一般格式為:類型說明符類型說明符 變量名變量名1 1, ,變量名變量名2, 2, , ,變量名變量名n n; 例:例:int i, j, k; /說明三個整型變量說明三個整型變量i, j, kfloat x, y, z; /說明三個單精度實型變量說明三個單精度實型變量x, y, zch
28、ar c1, c2; /說明兩個字符型變量說明兩個字符型變量c1, c2double dx; /說明一個雙精度型變量說明一個雙精度型變量dx 思考:編譯器做了哪些事情?36變量初始化賦初值:賦初值:定義變量時即給變量一個值稱為變量初定義變量時即給變量一個值稱為變量初始化或給變量賦初值始化或給變量賦初值 例如:例如:int a=3, bint a=3, b(4)(4), c=5;, c=5;float x=3.0float x=3.0; 變量初始化可以避免引用到隨機(jī)變量。變量初始化可以避免引用到隨機(jī)變量。int ival(4);/direct-initialization C+,int ival
29、(4);/direct-initialization C+,效率高?效率高?int ival=4;/copy initialization Cint ival=4;/copy initialization C定義和聲明v變量定義(definition): 為變量分配存儲空間,初始化。每個變量有且僅有一個定義v變量聲明(declaration):關(guān)鍵字extern 告訴編譯器變量的類型和名字,沒有分配存儲空間。每個變量可以有多次聲明。定義即為聲明,但聲明!=定義int i;/declares and defines iextern int i; / declares but does not d
30、efine i思考: 程序中有如下兩個語句是否有問題?int i;extern int i=5; 補(bǔ)充知識381.5.2 文字常量1. 1. 整型常量整型常量 4. 4. 字符串常量字符串常量3. 3. 字符型常量字符型常量2. 2. 實型常量實型常量文字常量:文字常量:指程序中直接給出的量;指程序中直接給出的量;常量的值在程序執(zhí)行過程中保持不變;并且常量的值在程序執(zhí)行過程中保持不變;并且存儲存儲在程序區(qū)在程序區(qū),而非數(shù)據(jù)區(qū);,而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為以下幾種:根據(jù)取值和表示方法的不同,可分為以下幾種:ok5.布爾常量: true和false39整型常量十進(jìn)制表示法十進(jìn)制表
31、示法八進(jìn)制表示法八進(jìn)制表示法十六進(jìn)制表示法十六進(jìn)制表示法其他表示法其他表示法整型常量表示方法:ok默認(rèn)為默認(rèn)為intint類型類型40 整數(shù)的十進(jìn)制表示方法十進(jìn)制表示與我們熟悉的書寫方式相同。十進(jìn)制表示與我們熟悉的書寫方式相同。例:例:15 -24ok41 整數(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-429ok42 整數(shù)的十六進(jìn)制表
32、示 十六進(jìn)制十六進(jìn)制以以0X0X(大小寫均可)開始,由數(shù)(大小寫均可)開始,由數(shù)字字0 0 9 9和字母和字母A A F F(大小寫均可)組成(大小寫均可)組成,用來,用來表示一個十六進(jìn)制數(shù)。表示一個十六進(jìn)制數(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-12256ok43整數(shù)的其他表示方法長整型常量和無符號整型常量:長整型常量和無符號整型常量:長整型常數(shù)以長整型常數(shù)以 L L 或或 l l 結(jié)尾,無符號常整數(shù)以結(jié)尾
33、,無符號常整數(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。44實型常量( (1)1)一般形式一般形式與平時書寫形式相同,與平時書寫形式相同,由數(shù)字由數(shù)字 0 0 9 9和和小數(shù)點小數(shù)點組成組成。例如:。例如:0.23 -125.76 0.0 .46
34、 -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ù)點小數(shù)點和和1010的冪的冪的數(shù)為實型常量的數(shù)為實型常量表示方法:表示方法:45字符型
35、常量 字符常量:字符常量:用單引號引起來的單個字符用單引號引起來的單個字符。在內(nèi)存中保存的是字符的。在內(nèi)存中保存的是字符的ASCIIASCII碼值。在所有字符中,可顯示字符通常就用單引號引碼值。在所有字符中,可顯示字符通常就用單引號引起來表示:起來表示: a a /字符字符a a ASCII ASCII值為值為9595 /字符字符 44/字符字符4 4 /空格字符空格字符特殊情況字符,如不可顯示的字符等,特殊情況字符,如不可顯示的字符等,c+c+使用使用轉(zhuǎn)義序列轉(zhuǎn)義序列表表示方法示方法(詳(詳見表見表1 1-3-3,此處略):,此處略):n n /換行換行 / /字符字符 課下查找: b, 1
36、42, 和x62分別代表什么?其ASCII值是多少?464. 字符串常量字符串常量與字符型常量的區(qū)別:字符串常量與字符型常量的區(qū)別:字符串常量字符串常量aa占兩個字節(jié),存放占兩個字節(jié),存放aa和和 0 0,值為,值為0 x61000 x6100字符型常量字符型常量aa占一個字節(jié),存放占一個字節(jié),存放aa,值為,值為0 x610 x61字符串常量:字符串常量:用雙引號引起來的若干個字符用雙引號引起來的若干個字符。例如例如: :I am a Chinese.,123, a , I am a Chinese.,123, a , 471.5.3 常變量標(biāo)識符常量:標(biāo)識符常量:用常量說明符用常量說明符c
37、onstconst給文字常量起的名字(標(biāo)識符),給文字常量起的名字(標(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)行初始化;常變量初始化之后,不允許再被賦值;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量必須先說明后使用;常變量存儲
38、在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進(jìn)行類型檢查。統(tǒng)對常變量進(jìn)行類型檢查。C+C+建議使用常變量,而不要使用文字常量。建議使用常變量,而不要使用文字常量。作業(yè)v1. unsigned 和signed 類型有什么區(qū)別?v2. int,long和short類型有什么區(qū)別?v3. 當(dāng)給16位unsigned short對象賦值100000時,賦的值是多少?v4.下列哪些是(如果有)非法的? a).who goes with F145rgus?012 b)3.14e1L c)two Lsome d)1024f 491.6 運算符和表達(dá)式1.6
39、.1 運算符、優(yōu)先級和結(jié)合性運算符、優(yōu)先級和結(jié)合性 1.6.2 基本運算符及其表達(dá)式基本運算符及其表達(dá)式 1.6.4 算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換 (選讀選讀)1.6.5 求值次序與副作用求值次序與副作用 1.6.3 語句語句 本節(jié)的重點:介紹與基本數(shù)據(jù)類型封裝在一起的運算(操作)。介紹與基本數(shù)據(jù)類型封裝在一起的運算(操作)。ok501.6.1 運算符、優(yōu)先級和結(jié)合性ok 在在C+C+中對常量或變量進(jìn)行運算或處理的符號稱為中對常量或變量進(jìn)行運算或處理的符號稱為運算符運算符(Operator)(Operator),參與運算的對象稱為,參與運算的對象稱為操作數(shù)操作數(shù)(ope
40、rand)(operand)。運算符按操作數(shù)的數(shù)量分類:運算符按操作數(shù)的數(shù)量分類: 單目運算符單目運算符只對一個操作數(shù)運算,如負(fù)號運算只對一個操作數(shù)運算,如負(fù)號運算符符“ ”等;等; 雙目運算符雙目運算符要求有兩個操作數(shù),如乘號運算符要求有兩個操作數(shù),如乘號運算符“*”等;等; 三目運算符三目運算符要求有三個操作數(shù),三元運算符只要求有三個操作數(shù),三元運算符只有一個有一個“?:”。511.6.1 運算符、優(yōu)先級和結(jié)合性ok 優(yōu)先級和結(jié)合性決定了運算中的優(yōu)先關(guān)系優(yōu)先級和結(jié)合性決定了運算中的優(yōu)先關(guān)系。優(yōu)先級:優(yōu)先級:指不同運算符在運算中的優(yōu)先關(guān)系,指不同運算符在運算中的優(yōu)先關(guān)系,可以用序號表示,序號
41、越小,優(yōu)先級越高??梢杂眯蛱柋硎?,序號越小,優(yōu)先級越高。例如:例如: 加號()和減號()的優(yōu)先級是加號()和減號()的優(yōu)先級是6 6;乘;乘號(號( * * )和除號()和除號( / / )的優(yōu)先級是)的優(yōu)先級是5 5;* * 和和 / / 的優(yōu)先級高于和;的優(yōu)先級高于和; ()()凌駕于優(yōu)先級之上凌駕于優(yōu)先級之上 521.6.1 運算符、優(yōu)先級和結(jié)合性結(jié)合性:結(jié)合性:決定優(yōu)先級相等的運算符組合在一起時的運算次序決定優(yōu)先級相等的運算符組合在一起時的運算次序,同一優(yōu)先級的運算符有相同的結(jié)合性。同一優(yōu)先級的運算符有相同的結(jié)合性。 如如+、-的結(jié)合性是從左到右(左結(jié)合),則的結(jié)合性是從左到右(左結(jié)合
42、),則a+b+c-d的運算次序為:的運算次序為:(a+b)+c)-d /先算先算a+b,再加,再加c,最后減,最后減d 又如前又如前+和單目負(fù)和單目負(fù)-的結(jié)合性是從右到左(右結(jié)的結(jié)合性是從右到左(右結(jié)合),則合),則-+a的運算次序為:的運算次序為:-(+a) /先做先做+a,再取相反數(shù)(加負(fù)號),再取相反數(shù)(加負(fù)號)這對算法描述是必須的,每一步做什么必須確定。這對算法描述是必須的,每一步做什么必須確定。531.6.1 運算符、優(yōu)先級和結(jié)合性例:例:(1) a*b+c; /先做乘法運算,再做加法先做乘法運算,再做加法(2) a+b-c ;/根據(jù)左結(jié)合性,先取根據(jù)左結(jié)合性,先取a、b相加;相加;
43、/再取再取c,最后相減,最后相減演示如下:設(shè)演示如下:設(shè)a=10,b=20,c=15;10203015-15541 算術(shù)運算符及其表達(dá)式算術(shù)運算符及其表達(dá)式4 邏輯運算、邏輯表達(dá)式及其求值優(yōu)化邏輯運算、邏輯表達(dá)式及其求值優(yōu)化 5 位運算(選讀)位運算(選讀) 2 賦值運算符賦值表達(dá)式賦值運算符賦值表達(dá)式3 自增、自減運算自增、自減運算 6 逗號運算符與逗號表達(dá)式逗號運算符與逗號表達(dá)式 1.6.2 基本運算符及其表達(dá)式7 sizeof( )運算符運算符 表達(dá)式:表達(dá)式:由運算符、操作數(shù)及標(biāo)點符號組成的,能取得由運算符、操作數(shù)及標(biāo)點符號組成的,能取得一個值一個值的式子。的式子。表達(dá)式求值關(guān)鍵:表達(dá)
44、式求值關(guān)鍵:優(yōu)先級優(yōu)先級和和結(jié)合性結(jié)合性551.算術(shù)運算符及其表達(dá)式優(yōu)先級優(yōu)先級運算符運算符名名 稱稱3+正,單目正,單目 -負(fù),單目負(fù),單目5*乘,雙目乘,雙目 /除,雙目除,雙目 %求余,雙目求余,雙目6+加,雙目加,雙目 -減,雙目減,雙目ok56整數(shù)的算術(shù)運算:整數(shù)的算術(shù)運算:當(dāng)兩個操作數(shù)均為整數(shù)時,當(dāng)兩個操作數(shù)均為整數(shù)時,* *和和/ /重載為重載為整乘整乘和和整除整除,結(jié),結(jié)果為整數(shù),除法運算后舍去小數(shù)取整。如:果為整數(shù),除法運算后舍去小數(shù)取整。如:5/45/4/結(jié)果為結(jié)果為1 1,整數(shù),整數(shù)當(dāng)兩個操作數(shù)均為整數(shù),當(dāng)兩個操作數(shù)均為整數(shù),%定義為定義為求余求余運算,也稱求模運算,也稱
45、求模運算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中運算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中有負(fù)數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的有負(fù)數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的符號與被符號與被除數(shù)相同除數(shù)相同。例如。例如6%3/結(jié)果為結(jié)果為06%7/結(jié)果為結(jié)果為67%6/結(jié)果為結(jié)果為1-7%6/結(jié)果為結(jié)果為-17%-6/結(jié)果為結(jié)果為1-7%-6/結(jié)果為結(jié)果為-157實數(shù)的算術(shù)運算:實數(shù)的算術(shù)運算: 只要有一個操作數(shù)是實數(shù),兩個操作數(shù)均轉(zhuǎn)只要有一個操作數(shù)是實數(shù),兩個操作數(shù)均轉(zhuǎn)換為換為doubledouble型,型,*和和/重載為普通的重載為普通的乘乘和和除除,結(jié),結(jié)果果是實數(shù)是實數(shù):5/4.
46、05/4.0/結(jié)果為結(jié)果為1.251.25,實數(shù),實數(shù)運算符的重載:運算符的重載:運算符總是與操作數(shù)封裝在一起。相同的運算符運算符總是與操作數(shù)封裝在一起。相同的運算符對不同類型的操作數(shù)執(zhí)行的運算是有差異的。對不同類型的操作數(shù)執(zhí)行的運算是有差異的。58算術(shù)表達(dá)式:使用時注意:使用時注意:1 1、表達(dá)式中每個變量都有確定的值時才能進(jìn)行表、表達(dá)式中每個變量都有確定的值時才能進(jìn)行表達(dá)式求值;達(dá)式求值;2 2、C+中算術(shù)運算應(yīng)注意數(shù)據(jù)溢出問題,即運算結(jié)中算術(shù)運算應(yīng)注意數(shù)據(jù)溢出問題,即運算結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。果超出對應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會對編譯程序只會對除法運算時除數(shù)為除法運算時除
47、數(shù)為0這種情況提示出錯,這種情況提示出錯,因此,程因此,程序設(shè)計者必須在程序中解決檢查并處理整數(shù)溢出問序設(shè)計者必須在程序中解決檢查并處理整數(shù)溢出問題。題。ok由算術(shù)運算符連接的表達(dá)式,如:由算術(shù)運算符連接的表達(dá)式,如:a+b*3 ;short x=32767;x+=1;coutx=xendl;測試結(jié)果(code:lock)x=-32768各類數(shù)值型數(shù)據(jù)間的混合運算v整型、實型、字符型間可以混合運算10+ a+1.5-2.0* b課下計算 1/3*2 1./3 1/3. 0/(a-1) 0/(a-1.0)doublefloatlongunsignedintchar, short低高602.賦值運
48、算符與賦值表達(dá)式 ok賦值與引用:賦值與引用: 將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為賦值賦值,如果,如果該單元中已有值,賦值操作以新值取代舊值;從該單元中已有值,賦值操作以新值取代舊值;從某個存儲單元中取出數(shù)據(jù)使用,稱為某個存儲單元中取出數(shù)據(jù)使用,稱為引用引用,引用,引用不影響單元中的值,即一個量可以多次引用。不影響單元中的值,即一個量可以多次引用。常常量量只能引用,不能賦值。只能引用,不能賦值。 賦值通過賦值運算符賦值通過賦值運算符“=”來完成,其意義是將來完成,其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是等
49、號賦值號不是等號(=),它具有方向性,它具有方向性。 61左值與右值:左值與右值:C+C+將變量名代表的單元稱為將變量名代表的單元稱為 “左值左值”(l-value),而將變量的值稱為,而將變量的值稱為“右值右值”(r-value)。 左值左值必須是內(nèi)存中一個可以訪問且可以合法修改的必須是內(nèi)存中一個可以訪問且可以合法修改的對象對象,因此只能是變量名,因此只能是變量名,而不能是常量或表達(dá)式而不能是常量或表達(dá)式。2.賦值運算符與賦值表達(dá)式 例如下面的賦值運算是錯誤的:例如下面的賦值運算是錯誤的:3.1415926=pi;/左值不能是常數(shù)左值不能是常數(shù)x+y=z;/左值不能是表達(dá)式左值不能是表達(dá)式c
50、onst int N=30;N=40;/左值不能是常變量左值不能是常變量622.賦值運算符與賦值表達(dá)式賦值表達(dá)式:賦值表達(dá)式:由賦值運算符連接的表達(dá)式。格式為:由賦值運算符連接的表達(dá)式。格式為: 變量變量 = = 表達(dá)式表達(dá)式 例如:例如:x=5+6;x=5+6;a=b=c=d+1a=b=c=d+1; ; 賦值表達(dá)式的值取左邊變量的值賦值表達(dá)式的值取左邊變量的值復(fù)合運賦值算符:復(fù)合運賦值算符:由由雙目算術(shù)運算符和位運算符雙目算術(shù)運算符和位運算符與賦值運算符組合成的單一運算符,共與賦值運算符組合成的單一運算符,共1010個:個:+ = = * = / = % = = &= | = =格式
51、為:格式為: 變量變量 復(fù)合賦值運算符復(fù)合賦值運算符 表達(dá)式表達(dá)式 它等同于它等同于 變量變量 = = 變量變量 運算符運算符 ( (表達(dá)式表達(dá)式) ) 例如:例如: x+=5x+=5 等同于:等同于: x=x+5x=x+5 x x計算一次計算一次 x x計算兩次計算兩次ok b-=x+5 b-=x+5 b=b-(x+5) b=b-(x+5) x x* *=c-6 =c-6 x=x x=x* *(c-6)(c-6) y/=a y/=a* *4 4 y=y/(a y=y/(a* *4)4) k%=b-2 k%=b-2 k=k%(b-2) k=k%(b-2)v 賦值規(guī)則賦值規(guī)則v 如果賦值運算符兩
52、側(cè)的類型不一致,則在如果賦值運算符兩側(cè)的類型不一致,則在賦值時要進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為:賦值時要進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為:v 實型實型整變量整變量v 舍去小數(shù)部分。舍去小數(shù)部分。v int a=5.5; a int a=5.5; a中為中為5 5。v 整型整型實變量實變量v 數(shù)值不變,以浮點形式存儲。數(shù)值不變,以浮點形式存儲。v 字符型字符型整變量整變量v 放在整形變量低放在整形變量低8 8位。保持原值不變原則。位。保持原值不變原則。v int a= int a=A A; ;v賦值運算符的優(yōu)先級低于所有算術(shù)運算符,且是賦值運算符的優(yōu)先級低于所有算術(shù)運算符,且是右右結(jié)合結(jié)合性性例:計算以下表達(dá)
53、式的值:例:計算以下表達(dá)式的值: a=b=c=5 a=b=c=5 a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=4.5)+(c=6.5) a=(b=4.5)+(c=6.5) (a a、b b、c c為整型變量)為整型變量) a+=a-=a a+=a-=a* *a (a (設(shè)設(shè)a a的原值為的原值為3)3) a=(b=c)=5 a=(b=c)=5 ERRORERROR653.自增自減運算前置和后置運算:前置和后置運算:前置是先增減后引用前置是先增減后引用,即先對變量自加或自減,用新的值,即先對變量自加或自減,用新的值參與其他運算;參與其
54、他運算;后置則是先引用后增減后置則是先引用后增減,即用變量原來的,即用變量原來的值參與其他運算,然后再對變量進(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; 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;自增自減運算符:自增自減運
55、算符:意義:使變量當(dāng)前值加意義:使變量當(dāng)前值加1 1或減或減1 1,再賦給該變量。再賦給該變量。要求:操作數(shù)只能是要求:操作數(shù)只能是變量變量,不能是常量或表達(dá)式;,不能是常量或表達(dá)式;ok 注意:注意:+和和-只能用于變量。只能用于變量。 如:如:3+3+和(和(a+1a+1)+ + 不合法不合法+和和-為右結(jié)合性。為右結(jié)合性。 (-i)+ (-i)+ -i+ -i+ -(i+) -(i+) 若若i i的原值是的原值是5 5,則該表達(dá)式的值是多少?,則該表達(dá)式的值是多少?errorerror 例:分析執(zhí)行下列語句后的結(jié)果:例:分析執(zhí)行下列語句后的結(jié)果: a=5; a b c da=5; a b
56、 c d b=a+;b=a+; c=-a-b+; c=-a-b+; d=(a+)-(+b)+c-; d=(a+)-(+b)+c-; 556 506 7-26-1思考:i+和+i 執(zhí)行效率有什么區(qū)別?建議:只有在必要時才使用后置操作符!課下查找與測試兩種特殊情況:兩種特殊情況: k=(i+)+(i+)+(i+); k=(i+)+(i+)+(i+); /i=0; /i=0; k=i+j; k=i+j; 是是 i+(+j) i+(+j) 還是還是 (i+)+j ? (i+)+j ? 取決于編譯器取決于編譯器Between the previous and next sequence point an
57、 object shall have its stored value modified at most once by the evaluation of an expression.-The Standardsequence point: at the end of the evaluation of a full expression, at the |, &, ?:, and comma operators; at a function call ;694.邏輯運算、邏輯表達(dá)式及其求值優(yōu)化 ok邏輯運算:邏輯運算:用于判斷分析,運算符包括用于判斷分析,運算符包括關(guān)系關(guān)系和和邏輯
58、邏輯運算符。運算符。關(guān)系運算符:關(guān)系運算符:包括:包括: (大于)、(大于)、(大于等于)、(大于等于)、 (小于)、(小于)、(?。ㄐ∮诘扔冢⒂诘扔冢?、= = =(等于)和!(等于)和!= =(不等于)。關(guān)系運算符完(不等于)。關(guān)系運算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(true(真真) )或或falsefalse(假)(假)。每種。每種可比較大小可比較大小的數(shù)據(jù)類型,都的數(shù)據(jù)類型,都重載重載了關(guān)系運算了關(guān)系運算符。不同類型,自動轉(zhuǎn)換為同一類型后進(jìn)行比較。符。不同類型,自動轉(zhuǎn)換為同一類型后進(jìn)行比較。在在C+中這兩個邏輯值與整數(shù)之間有一個對應(yīng)
59、關(guān)系,真對應(yīng)中這兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對應(yīng)1,假對,假對應(yīng)應(yīng)0;反過來,;反過來,0對應(yīng)假,非對應(yīng)假,非0整數(shù)對應(yīng)真。整數(shù)對應(yīng)真。所以邏輯運算結(jié)果可以作所以邏輯運算結(jié)果可以作為整數(shù)參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算。為整數(shù)參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算。關(guān)系運算符和關(guān)系表達(dá)式大于 名稱小于等于大于等于 運算符=ab例子a=ba=b小于等于 = c+da+bc+d / /* *等同于等同于(a+b)(c+d)(a+b)(c+d), 結(jié)果為結(jié)果為0 0或或1 1* */ /y=aby=ab / /* *計算計算abab的值的值0 0或或1 1 賦給賦給y y,y
60、 y的值為的值為0 0或或1 1* */ /abcabc / /* *等同于等同于(ab)c(ab)c,先求,先求ab ab 的值,的值, 再將結(jié)果再將結(jié)果0 0或或1 1與與c c比較大小比較大小* */ /由關(guān)系運算符連接的表達(dá)式。值為由關(guān)系運算符連接的表達(dá)式。值為truetrue或或falsefalse。ok724.邏輯運算、邏輯表達(dá)式及其求值優(yōu)化設(shè)有定義設(shè)有定義 float a=3.2;int b=5; ;則則: : 3ab/結(jié)果是結(jié)果是?根據(jù)左結(jié)合根據(jù)左結(jié)合原則其運算原則其運算過程如下:過程如下:a5b3.23F, 即即0F即即0練習(xí)v設(shè)設(shè) a=2, b=4, c=1a=2, b=4, c=1計算以下關(guān)系表達(dá)式的值:計算以下關(guān)系表達(dá)式的值: ab ab a+bb+ca+bb+ca a b b 可以是字符表達(dá)式可以是字符表達(dá)式(x=2x=2)(y=5) (y=5) 可以是賦值表
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美發(fā)店與消防部門安全檢查合同
- 2025年度校園食堂廚師勞務(wù)派遣合同4篇
- 2025年度圖書代售及推廣服務(wù)合同4篇
- 2024碎石原料交易市場建設(shè)合同
- 2024裝修工程額外項目合同書一
- 2025年度智慧城市建設(shè)綜合解決方案承包合作協(xié)議4篇
- 2025年度SEO風(fēng)險管理與合規(guī)性審核合同3篇
- 2025年度山林土地流轉(zhuǎn)與綜合開發(fā)承包合同4篇
- 2024正規(guī)商鋪買賣合同合同標(biāo)的物權(quán)屬核實協(xié)議3篇
- 2024年教學(xué)專用高清晰度數(shù)碼集成背投行業(yè)發(fā)展趨勢報告
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- 2025湖北襄陽市12345政府熱線話務(wù)員招聘5人高頻重點提升(共500題)附帶答案詳解
- 計劃合同部部長述職報告范文
- 2025年河北省職業(yè)院校技能大賽智能節(jié)水系統(tǒng)設(shè)計與安裝(高職組)考試題庫(含答案)
- 人教版高一地理必修一期末試卷
- 2024年下半年鄂州市城市發(fā)展投資控股集團(tuán)限公司社會招聘【27人】易考易錯模擬試題(共500題)試卷后附參考答案
- GB/T 29498-2024木門窗通用技術(shù)要求
- 《職業(yè)院校與本科高校對口貫通分段培養(yǎng)協(xié)議書》
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 人教版(2024)英語七年級上冊單詞表
- 二手車車主寄售協(xié)議書范文范本
評論
0/150
提交評論