C++程序設(shè)計(jì)全套課件完整版ppt教學(xué)教程最新最全_第1頁
C++程序設(shè)計(jì)全套課件完整版ppt教學(xué)教程最新最全_第2頁
C++程序設(shè)計(jì)全套課件完整版ppt教學(xué)教程最新最全_第3頁
C++程序設(shè)計(jì)全套課件完整版ppt教學(xué)教程最新最全_第4頁
C++程序設(shè)計(jì)全套課件完整版ppt教學(xué)教程最新最全_第5頁
已閱讀5頁,還剩897頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué)習(xí)內(nèi)容:1. C+語言的發(fā)展歷史及其特點(diǎn);2. C+語言程序的構(gòu)成和開發(fā)過程;3. C+語言的基本詞法單位;4. 數(shù)據(jù)類型,變量及常量5. 常用運(yùn)算符的含義、優(yōu)先級(jí)、結(jié)合性與使用方法;6. 表達(dá)式的構(gòu)成規(guī)則和使用;7. 數(shù)據(jù)類型轉(zhuǎn)換;8基本輸入/輸出。第1章 C+基礎(chǔ)第1章 C+基礎(chǔ)1.3 C+程序開發(fā)過程1.6 變量和常量1.8 數(shù)據(jù)的輸入輸出1.7 運(yùn)算符和表達(dá)式1.5 C+的數(shù)據(jù)類型1.4 C+的詞法單位1.1 C+概述 1.2 簡(jiǎn)單的C+程序?qū)嵗?.1 C+概述 什么是程序?要讓計(jì)算機(jī)解決某一個(gè)問題之前,必須先把求解問題的步驟描述出來,稱之為算法。將算法用某種特定的計(jì)算機(jī)語言表達(dá)出來

2、,輸入到計(jì)算機(jī),就是計(jì)算機(jī)編程,用計(jì)算機(jī)語言表達(dá)出的算法稱之為計(jì)算機(jī)程序(或程序)。程序是為實(shí)現(xiàn)特定目標(biāo)或解決特定問題而用計(jì)算機(jī)語言編寫的命令序列的集合,程序規(guī)定了計(jì)算機(jī)執(zhí)行的動(dòng)作和動(dòng)作的順序。1.1 C+概述什么是程序?一個(gè)程序應(yīng)包括以下兩方面的內(nèi)容:(1) 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。(2) 對(duì)操作的描述。即操作步驟,也就是算法。數(shù)據(jù)是操作的對(duì)象,操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處理,以得到期望的結(jié)果。程序設(shè)計(jì)(Programming)簡(jiǎn)單地說,程序設(shè)計(jì)就是為計(jì)算機(jī)編制程序的過程,程序設(shè)計(jì)編碼,它涉及:程序設(shè)計(jì)方法(包括程序設(shè)計(jì)范型)程序設(shè)計(jì)步驟 程序設(shè)計(jì)

3、語言等1.1 C+概述程序設(shè)計(jì)范型 程序設(shè)計(jì)本質(zhì)上可歸結(jié)為:數(shù)據(jù)描述數(shù)據(jù)操作(加工)描述對(duì)數(shù)據(jù)和數(shù)據(jù)操作之間關(guān)系的不同處置就形成了不同的程序設(shè)計(jì)范型(Programming Paradigms)。典型的程序設(shè)計(jì)范型有:過程式(面向功能)對(duì)象式(面向數(shù)據(jù))函數(shù)式邏輯式,等1.1 C+概述過程式程序設(shè)計(jì)一種以功能為中心、基于功能分解的程序設(shè)計(jì)范型。一個(gè)過程式程序由一些子程序構(gòu)成,每個(gè)子程序?qū)?yīng)一個(gè)子功能。子程序描述了一系列的操作,它實(shí)現(xiàn)了功能抽象。過程式程序的執(zhí)行過程體現(xiàn)為一系列的子程序調(diào)用。數(shù)據(jù)處于附屬地位,它獨(dú)立于子程序,在子程序調(diào)用時(shí)通過參數(shù)或全局變量傳給子程序使用。著名的計(jì)算機(jī)科學(xué)家Nik

4、iklaus Wirth描述了過程式程序設(shè)計(jì)的本質(zhì):程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu)1.1 C+概述對(duì)象式(面向?qū)ο螅?程序設(shè)計(jì)一種以數(shù)據(jù)為中心、基于數(shù)據(jù)抽象的程序設(shè)計(jì)范型,通常稱為面向?qū)ο蟪绦蛟O(shè)計(jì)。一個(gè)面向?qū)ο蟪绦蛴梢恍?duì)象構(gòu)成,對(duì)象是由一些數(shù)據(jù)及可施于這些數(shù)據(jù)上的操作所組成的封裝體。對(duì)數(shù)據(jù)的操作是通過向包含數(shù)據(jù)的對(duì)象發(fā)送消息(調(diào)用對(duì)象提供的操作)來實(shí)現(xiàn)。對(duì)象的特征由相應(yīng)的類來描述,一個(gè)類可以從其它的類繼承。面向?qū)ο蟪绦虻膱?zhí)行過程體現(xiàn)為各個(gè)對(duì)象之間相互發(fā)送和處理消息。程序 = 對(duì)象 + 消息對(duì)象 = 數(shù)據(jù) + 操作1.1 C+概述函數(shù)式與邏輯式 函數(shù)式程序設(shè)計(jì)是圍繞函數(shù)來進(jìn)行的,計(jì)算過程體現(xiàn)為一

5、系列的函數(shù)應(yīng)用(Function Application),它基于了遞歸函數(shù)理論和lambda演算,其中,函數(shù)也被作為值來看待,即,函數(shù)的參數(shù)也可以是函數(shù) 。邏輯程序設(shè)計(jì)是把程序組織成一組事實(shí)和一組推理規(guī)則,在事實(shí)基礎(chǔ)上運(yùn)用推理規(guī)則來實(shí)施計(jì)算,它基于的是謂詞演算(Predicate Calculus)。上述兩種程序設(shè)計(jì)范型常用于人工智能領(lǐng)域的程序開發(fā)。 1.1 C+概述程序設(shè)計(jì)步驟明確問題 搞清楚要解決的問題并給出問題的明確定義,即:做什么?系統(tǒng)設(shè)計(jì) 給出問題的解決方案,即:如何做?主要包括:數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)算法的設(shè)計(jì) 如何組織上述兩者,屬于不同的程序設(shè)計(jì)范型。1.1 C+概述編程選擇用某種語言

6、按系統(tǒng)設(shè)計(jì)進(jìn)行編程。良好的編程風(fēng)格可以通過學(xué)習(xí)和訓(xùn)練來獲得。 測(cè)試與調(diào)試 程序?qū)懞弥?,其中可能含有錯(cuò)誤。程序的邏輯錯(cuò)誤和運(yùn)行異常錯(cuò)誤一般可以通過測(cè)試(test)來發(fā)現(xiàn)。發(fā)現(xiàn)錯(cuò)誤給錯(cuò)誤定位的過程稱為調(diào)試(debug)。 運(yùn)行維護(hù) 所有的測(cè)試手段只能發(fā)現(xiàn)程序中的錯(cuò)誤,而不能證明程序沒有錯(cuò)誤。在使用中發(fā)現(xiàn)錯(cuò)誤并改錯(cuò)稱為維護(hù)。程序設(shè)計(jì)步驟(續(xù))1.1 C+概述程序設(shè)計(jì)語言 程序設(shè)計(jì)的結(jié)果必然要用一種能被計(jì)算機(jī)接受的語言表示出來,即編程實(shí)現(xiàn)(Coding)。根據(jù)與計(jì)算機(jī)指令系統(tǒng)和人們解決問題所采用的描述語言(如:數(shù)學(xué)語言)的接近程度,常常把程序語言分為: 低級(jí)語言 高級(jí)語言 通常所講的程序設(shè)計(jì)語言往往

7、指的是高級(jí)語言。1.1 C+概述低級(jí)語言和高級(jí)語言低級(jí)語言:是指特定計(jì)算機(jī)能夠直接理解的語言(或與之直接對(duì)應(yīng)的語言)機(jī)器語言:采用指令編碼和數(shù)據(jù)的存儲(chǔ)位置來表示操作以及操作數(shù); 匯編語言:是用符號(hào)名來表示操作和操作數(shù)位置,以增加程序的易讀性。需要翻譯(匯編)成機(jī)器語言才能執(zhí)行。 高級(jí)語言:是指人容易理解和有利于人對(duì)解題過程進(jìn)行描述的程序語言。典型的高級(jí)語言有:FORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp、Prolog、Simula、Smalltalk、C+、Java等 1.1 C+概述低級(jí)語言與高級(jí)語言程序的比較計(jì)算r=a+b*c-d的值,用匯編

8、語言可寫成:mov ax,bmul ax,cadd ax,asub ax,dmov r,ax用高級(jí)語言可寫成:r = a+b*c-d 1.1 C+概述低級(jí)語言的優(yōu)、缺點(diǎn)優(yōu)點(diǎn):寫出的程序效率比較高,包括執(zhí)行速度快和占用空間少。缺點(diǎn):程序難以設(shè)計(jì)、理解與維護(hù),難以保證程序的正確性。另外,可移植性差。高級(jí)語言的優(yōu)、缺點(diǎn)優(yōu)點(diǎn):程序容易設(shè)計(jì)、理解與維護(hù),容易保證程序正確性??梢浦残院萌秉c(diǎn):用其編寫的程序相對(duì)于用低級(jí)語言編寫的程序效率要低,翻譯成的目標(biāo)代碼量較大 。低級(jí)語言與高級(jí)語言程序的比較1.1 C+概述 高級(jí)語言的翻譯用高級(jí)語言書寫的程序須翻譯成機(jī)器語言程序才能在計(jì)算機(jī)上運(yùn)行。翻譯方式有兩種:編譯把

9、高級(jí)語言程序(稱為源程序)首先翻譯成功能上等價(jià)的機(jī)器語言程序(稱為目標(biāo)代碼程序)或匯編語言程序(再通過匯編程序把它翻譯成目標(biāo)代碼程序),然后執(zhí)行目標(biāo)代碼程序。在目標(biāo)代碼程序的執(zhí)行中不再需要源程序。解釋對(duì)源程序中的語句進(jìn)行逐條翻譯并執(zhí)行,翻譯完了程序也就執(zhí)行完了。這種翻譯方式不產(chǎn)生目標(biāo)程序,程序的每次執(zhí)行都需要源程序。 1.1 C+概述把高級(jí)語言程序翻譯成機(jī)器語言程序的工作一般由程序來實(shí)現(xiàn),根據(jù)翻譯方式可把翻譯程序分為:編譯程序解釋程序 一般來說,編譯執(zhí)行比解釋執(zhí)行效率高解釋執(zhí)行容易實(shí)現(xiàn)平臺(tái)無關(guān) 高級(jí)語言的翻譯1.1 C+概述1.1 C+概述C/C+歷史C語言是美國(guó)貝爾實(shí)驗(yàn)室在19691973年

10、開發(fā)的,與此同時(shí),還用它開發(fā)了UNIX操作系統(tǒng)。 七十年代末,C語言開始移植到非UNIX環(huán)境中,并逐步脫離UNIX系統(tǒng)成為一種獨(dú)立的程序設(shè)計(jì)語言。1988年美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI對(duì)C語言進(jìn)行了標(biāo)準(zhǔn)化,產(chǎn)生了ANSI C。1.1 C+概述 C/C+歷史1980年,貝爾實(shí)驗(yàn)室的Bjarne Stroustrup博士及其同事對(duì)C語言進(jìn)行了改進(jìn)和擴(kuò)充,并把Simula 67中類的概念引入到C中。并在1983年由Rick Maseitti提議正式命名為C+(C Plus Plus)。1998年國(guó)際標(biāo)準(zhǔn)組織(ISO)頒布了C+程序設(shè)計(jì)語言的國(guó)際標(biāo)準(zhǔn)ISO/IEC 14882-1998。C+是具有國(guó)際標(biāo)

11、準(zhǔn)的編程語言,通常稱作ANSI/ISO C+。 1.1 C+概述(1)語言簡(jiǎn)潔、緊湊,使用靈活,書寫形式自由。 (2)具有豐富的運(yùn)算符和數(shù)據(jù)類型,表達(dá)式。(3)是結(jié)構(gòu)化程序設(shè)計(jì)語言,以函數(shù)作為程序的模塊單位,并支持程序的多文件結(jié)構(gòu),適用于大型復(fù)雜程序的設(shè)計(jì)。(4)可移植性強(qiáng)。(5)編譯后生成的目標(biāo)代碼小,質(zhì)量高,程序的執(zhí)行效率高。(6)能直接訪問內(nèi)存物理地址,通過位運(yùn)算能直接對(duì)計(jì)算機(jī)硬件進(jìn)行操作。 C語言的主要特點(diǎn):1.1 C+概述C+語言的主要特點(diǎn):(1)作為C語言的超集,C+繼承了C的所有優(yōu)點(diǎn),與C語言兼容,支持結(jié)構(gòu)化的程序設(shè)計(jì)。(2)對(duì)C的數(shù)據(jù)類型做了擴(kuò)充,修補(bǔ)了C語言中的一些漏洞,提供

12、更好的類型檢查和編譯時(shí)的分析。(3)生成目標(biāo)程序質(zhì)量高,程序執(zhí)行效率高。(4)支持面向?qū)ο蟮某绦蛟O(shè)計(jì),通過類和對(duì)象的概念把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,模塊的獨(dú)立性更強(qiáng)。通過派生、多態(tài)以及模板機(jī)制實(shí)現(xiàn)軟件復(fù)用。(5)提供了異常處理機(jī)制,簡(jiǎn)化了程序的出錯(cuò)處理。出錯(cuò)處理程序不必與正常的代碼緊密結(jié)合,提高了程序的可靠性和可讀性。C+提高了程序的可讀性、可靠性、可重用性、可維護(hù)性,更適合大型復(fù)雜軟件的開發(fā)。/hello.cpp#include using namespace std;int main( ) coutHello!n; coutWelcome to c+! endl; return 0;注

13、釋 /* */編譯預(yù)處理主函數(shù)1.2 簡(jiǎn)單的C+程序?qū)嵗?.2 簡(jiǎn)單的C+程序?qū)嵗?求兩數(shù)和#include /使用C+標(biāo)準(zhǔn)庫using namespace std; /指定使用標(biāo)準(zhǔn)庫的名空間stdint main() /主函數(shù)double x,y; /定義兩個(gè)變量x和ycout x y; /從鍵盤輸入數(shù)據(jù)給變量x和ydouble sum; /定義一個(gè)變量sum sum= x+y; /把x+y的結(jié)果保存到變量sum中cout x + y = sum endl; /輸出計(jì)算結(jié)果sumreturn 0; /程序結(jié)束【例1-1】輸入圓的半徑,編程計(jì)算圓周長(zhǎng)、圓面積、球體積 并顯示。# include

14、 using namespace std;int max(int i, int j) /用戶定義函數(shù) if (i=j) return i; else return j; int main() /主函數(shù) coutij; /從鍵盤上輸入變量值 coutmax number is:max(i, j) n ; /輸出提示和結(jié)果 return 0;/求兩個(gè)數(shù)的較大值程序組成:注釋編譯預(yù)處理指令程序體由若干函數(shù)組成,其中有且僅有一個(gè)主函數(shù)main(),這是程序的執(zhí)行入口。在Windows編程中定義為winmain()。1.2 簡(jiǎn)單的C+程序?qū)嵗?.3 C+程序的開發(fā)過程 編輯 利用某個(gè)編輯程序(如:Win

15、dows平臺(tái)上的寫字板、記事本、Word等)把C+源程序輸入到計(jì)算機(jī)中,并作為文本文件(稱為源文件)保存到外存(如硬盤等)中。C+源文件的文件名通常為:*.cpp和*.h。編譯預(yù)處理預(yù)處理器執(zhí)行編譯預(yù)處理命令 編譯 利用某個(gè)C+編譯程序?qū)Ρ4嬖谕獯嬷械腃+源程序進(jìn)行編譯,編譯結(jié)果作為目標(biāo)文件保存到外存。目標(biāo)文件的文件名通常為:*.obj。如果一個(gè)C+程序由多個(gè)源文件構(gòu)成,則每個(gè)源文件可以單獨(dú)編譯。 連接通過一個(gè)連接程序把程序的所有目標(biāo)文件以及程序中用到的一些系統(tǒng)功能所在的目標(biāo)文件(通常稱為庫文件)連接起來,作為一個(gè)可執(zhí)行文件保存到外存。可執(zhí)行文件的文件名通常為:*.exe。 運(yùn)行運(yùn)行機(jī)制,把某

16、個(gè)可執(zhí)行文件裝入內(nèi)存,運(yùn)行其中的可通過操作系統(tǒng)提供的應(yīng)用程序執(zhí)行程序。調(diào)試在程序開發(fā)過程的各個(gè)階段都可能出現(xiàn)錯(cuò)誤,需要用各種手段排查錯(cuò)誤??赏ㄟ^C+系統(tǒng)提供的調(diào)試工具幫助發(fā)現(xiàn)程序的邏輯錯(cuò)誤,運(yùn)行錯(cuò)誤。 1.3 C+程序的開發(fā)過程 程序編譯連接過程源程序(文本文件)*.CPP目標(biāo)文件(二進(jìn)制文件)*.OBJ可執(zhí)行文件(二進(jìn)制文件)*.EXE庫文件(各種函數(shù))在Vitual C+系統(tǒng)中,可直接從源程序編譯連接至可執(zhí)行程序。F7編譯連接compilelink1.3 C+程序的開發(fā)過程 1.4 C+的詞法單位1.4.1 C+的字符集 1.4.2 關(guān)鍵字 1.4.3 標(biāo)識(shí)符 1.4.4 標(biāo)點(diǎn)符號(hào) 1.4

17、.5 運(yùn)算符 1.4.6 空白符 1.4.1 C+的字符集ASCII碼字符集是計(jì)算機(jī)中的常用字符集。它包括英文字母及阿拉伯?dāng)?shù)字等128個(gè)字符,存儲(chǔ)一個(gè)ASCII碼占用一個(gè)字節(jié)單元。漢字國(guó)標(biāo)碼用于漢字處理。國(guó)標(biāo)碼的存儲(chǔ)占用兩個(gè)字節(jié)單元。Unicode字符集對(duì)各類字符進(jìn)行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個(gè)字符。 ASCII碼字符集,國(guó)標(biāo)碼字符集都是它的子集。常用字符集:26個(gè)小寫字母 abcdefghijklmnopqrstuvwxyz 26個(gè)大寫字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10個(gè)阿拉伯?dāng)?shù)字 0 1 2 3 4 5 6 7 8

18、 9 其他符號(hào) + - * / = , . _ : ; ? “ | ! # % & () 空格 制表符 回車C+語言基本字符:1.4.1 C+的字符集單詞 由字符集中的字符按照一定規(guī)則構(gòu)成的具有一定意義的最小語法單位。構(gòu)成C+的單詞(詞法單位)有:標(biāo)識(shí)符關(guān)鍵字文字常量操作符(運(yùn)算符)標(biāo)點(diǎn)符號(hào) C+的單詞1.4.2 關(guān) 鍵 字又稱保留字,是由系統(tǒng)定義的具有特定作用和含義的英文單詞。關(guān)鍵字不能另作它用。C+區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準(zhǔn)C+(ISO14882)定義了74個(gè)關(guān)鍵字,具體的C+編譯器會(huì)做一些增刪。常用關(guān)鍵字及分類見表1-1。數(shù)據(jù)類型說明符與修飾符bool char wcha

19、r_t class const double enum float int long short signed 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

20、 goto if return switch throw try while 運(yùn)算符及邏輯值delete false new sizeof true表1-1 C+常用關(guān)鍵字及分類 1.4.2 關(guān) 鍵 字1.4.3 標(biāo)識(shí)符是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。合法標(biāo)識(shí)符由字母或下劃線開始,由字母、數(shù)字、下劃線組成。取名有義,以提高可讀性;盡量不用下劃線或雙下劃線打頭,以免與C+語言內(nèi)部實(shí)現(xiàn)中用到的標(biāo)識(shí)符沖突。判斷下面哪些是合法的標(biāo)識(shí)符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student1

21、.4.3 標(biāo)識(shí)符1.4.4 標(biāo)點(diǎn)符號(hào) # () , : ; 等 作用:有一定的語法意義。如字符和字符串常量分別用 和 “ ”引起來。對(duì)語法符號(hào)起分隔作用。如 ;等1.4.5 運(yùn)算符運(yùn)算符 又稱操作符,用于描述運(yùn)算。如:+,-,*,/, =, ,=,=,|,&等。單詞有時(shí)需要用空白符 把它們分開,使得它們?cè)谛问缴铣蔀楠?dú)立的單位??瞻追ǎ嚎崭穹票矸剀嚪⑨尫?1.4.6 空白符1.5 C+的數(shù)據(jù)類型邏輯型 bool(C沒有)圖1-1 數(shù)據(jù)類型單精度型 float雙精度型 double數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型數(shù)組 type 指針 type *引用 type &(C沒有)結(jié)構(gòu) str

22、uct聯(lián)合 union枚舉 enum類 class (C沒有)字符型 char整 型 int空類型 void實(shí) 型 C+為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從“先說明后使用”的原則,以便編譯器進(jìn)行編譯。 數(shù)據(jù)具有不同的類型,類型定義了變量可存儲(chǔ)的數(shù)值范圍以及可進(jìn)行的操作。 1.5 C+的數(shù)據(jù)類型 對(duì)數(shù)據(jù)進(jìn)行分類,便于對(duì)數(shù)據(jù)進(jìn)行描述和處理。提高程序的可靠性,便于編譯程序自動(dòng)進(jìn)行類型一致性檢查。便于產(chǎn)生高效代碼。類 型名 稱占用字節(jié)數(shù)取 值 范 圍bool布爾型1true, false(signed) char有符號(hào)字符型1-128 127unsiged char無符號(hào)字符型10 255(signe

23、d) short (int)有符號(hào)短整型2-32768 32767unsigned short (int)無符號(hào)短整型20 65535(signed) int 有符號(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-3.4383.438 double雙精度型8-1.73081.7308 long double長(zhǎng)雙精度型8-1.7308 1.7308void空類型0無值VC+中所有基本數(shù)據(jù)類型1.

24、6 變量和常量1.6.1 變 量1.6.2 文字常量1.6.3 常變量在程序中,數(shù)據(jù)以兩種形式出現(xiàn):常量:用于表示在程序執(zhí)行過程中不變的數(shù)據(jù)。變量:用于表示在程序執(zhí)行過程中可變的數(shù)據(jù)。1.6.1 變 量 變量就是機(jī)器一個(gè)內(nèi)存位置的符號(hào)名,在該內(nèi)存位置可以保存數(shù)據(jù),并可通過符號(hào)名進(jìn)行訪問。變量的基本特性名字:用標(biāo)識(shí)符表示。類型:指定變量能取何種值、對(duì)其能進(jìn)行何種運(yùn)算(操作)以及所需內(nèi)存空間的大小等。 值:在類型的值集范圍內(nèi)可變。內(nèi)存空間和地址:存儲(chǔ)變量當(dāng)前值的內(nèi)存空間以及該空間的地址。變量說明一般格式為:存儲(chǔ)類型數(shù)據(jù)類型 變量名1,變量名2, ,變量名n; 例:int age; /說明1個(gè)整型變

25、量agefloat area,volumn; /說明2個(gè)實(shí)型變量char c1, c2; /說明兩個(gè)字符型變量c1, c2double dx; /說明一個(gè)雙精度型變量dx 1.6.1 變 量變量初始化:定義變量時(shí)即給變量一個(gè)值稱為變量初始化或給變量賦初值 例如:int a=3, b=4, c=5; float area=3.5,volumn=5.6;變量初始化可以避免引用到隨機(jī)變量1.6.1 變 量1.6.2 文字常量1. 整型常量 4. 字符串常量3. 字符型常量2. 實(shí)型常量文字常量:在程序中通過直接寫出常量值來使用的常量,通常又稱為直接量(literal) ;存儲(chǔ)在程序區(qū),而非數(shù)據(jù)區(qū);根

26、據(jù)取值和表示方法的不同,可分為以下幾種:整型常量整型常量表示形式:十進(jìn)制,由09數(shù)字組成,第一個(gè)數(shù)字不能是0(整數(shù)0除外),如:26,185,-92八進(jìn)制,由數(shù)字0打頭,07數(shù)字組成,如:047,0231,-0100十六進(jìn)制,由0 x或0X打頭,09數(shù)字和AF(或af)字母組成,如: 0 x2E, 0 x61, -0 xA4可在整型常量的后面:加上l或L,表示long int類型的常量,如:32765L 也可加上u或U,表示unsigned int類型的常量,如: 4352U 也可同時(shí)加上u(U)和l(L)表示unsigned long類型的常量,如:41152UL或41152LU 整型常量實(shí)

27、型常量(1)一般形式,例如:0.12 -325.74 0.0 .46 -35.(2) 指數(shù)形式(也稱為科學(xué)表示法)表示為尾數(shù)乘以10的次方形式,由尾數(shù)、E或e和階數(shù)組成。要求:E或e前面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù)。 例 : 判斷下列表示是否合法123E12 -.34e-2 E4 1.41E2.9 表示方法:字符型常量用單引號(hào)引起來的單個(gè)字符。在內(nèi)存中保存的是字符的ASCII碼值。在所有字符中,可顯示字符通常就用單引號(hào)引起來表示: a /字符a /字符4/字符4 /空格字符特殊情況字符,如不可顯示的字符等,c+使用轉(zhuǎn)義序列表示方法: n /換行 /反斜杠() 101 /A(1

28、0進(jìn)制編碼=65) 0 /null(10進(jìn)制編碼=0) x61 /a(10進(jìn)制編碼=97)4. 字符串常量字符串常量與字符型常量的區(qū)別:字符串常量a占兩個(gè)字節(jié),存放a和 0字符型常量a占一個(gè)字節(jié),存放a0用雙引號(hào)引起來的若干個(gè)字符。例如:I am a Chinese.,123, a , 對(duì)字符常量的操作按char類型進(jìn)行;對(duì)字符串常量的操作按字符數(shù)組的規(guī)定。1.6.3 常變量用常量說明符const給文字常量起的名字(標(biāo)識(shí)符)例如:const float PI=3.14159;const int Number=100;常變量必須也只能在說明時(shí)進(jìn)行初始化;常變量初始化之后,不允許再被賦值;常變量必

29、須先定義后使用;常變量存儲(chǔ)在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時(shí)系統(tǒng)對(duì)常變量進(jìn)行類型檢查。如某個(gè)常量在程序中經(jīng)常出現(xiàn),建議使用常變量,而不要使用文字常量,可以增強(qiáng)程序的可讀性和可維護(hù)性。變量和常量例題 #includeconst float PI=3.14159;int main( ) float v ,r,h; r=2.5; h=3.2; v=PI*r*r*h; coutv endl; return 0;常量變量變量先定義后使用符號(hào)常量1.7 運(yùn)算符和表達(dá)式1.7.1 運(yùn)算符、優(yōu)先級(jí)和結(jié)合性 1.7.2 基本運(yùn)算符及其表達(dá)式 1.7.3 數(shù)據(jù)類型轉(zhuǎn)換 1.7.4 語句 介紹與基本數(shù)據(jù)類型相關(guān)的

30、運(yùn)算(操作)1.7.1 運(yùn)算符、優(yōu)先級(jí)和結(jié)合性 對(duì)常量或變量進(jìn)行運(yùn)算或處理的符號(hào)稱為運(yùn)算符,參與運(yùn)算的對(duì)象稱為操作數(shù)。運(yùn)算符按操作數(shù)的數(shù)量分類: 單目運(yùn)算符只對(duì)一個(gè)操作數(shù)運(yùn)算,如負(fù)號(hào)運(yùn)算符“”等; 雙目運(yùn)算符有兩個(gè)操作數(shù),如乘號(hào)運(yùn)算符等; 三目運(yùn)算符有三個(gè)操作數(shù),三元運(yùn)算符只有一個(gè)“?:”。1.7.1 運(yùn)算符、優(yōu)先級(jí)和結(jié)合性 優(yōu)先級(jí)和結(jié)合性決定了運(yùn)算中的優(yōu)先關(guān)系。優(yōu)先級(jí)指不同運(yùn)算符在運(yùn)算中的優(yōu)先關(guān)系。結(jié)合性決定優(yōu)先級(jí)相同的運(yùn)算符組合在一起時(shí)的運(yùn)算次序,同一優(yōu)先級(jí)的運(yùn)算符有相同的結(jié)合性。例如: a+b-c ; /根據(jù)左結(jié)合性,先a、b相加,再減c c=b=a ; /根據(jù)右結(jié)核性,先算b=a1.7

31、.1 運(yùn)算符、優(yōu)先級(jí)和結(jié)合性對(duì)相鄰的兩個(gè)運(yùn)算符,按下面規(guī)則:優(yōu)先級(jí):優(yōu)先級(jí)高的先運(yùn)算結(jié)合性:相同優(yōu)先級(jí)按左結(jié)合或右結(jié)合例如:a+b*(c-d)計(jì)算次序?yàn)椋?,*,+對(duì)不相鄰的運(yùn)算符,C+一般沒有規(guī)定計(jì)算次序(& | ?: ,運(yùn)算符除外)例如:(a+b)*(c-d) C+沒有規(guī)定+和-的計(jì)算次序。1 算術(shù)運(yùn)算4 關(guān)系和邏輯運(yùn)算5 位運(yùn)算2 賦值運(yùn)算3 自增、自減運(yùn)算 6 逗號(hào)運(yùn)算 1.7.2 基本運(yùn)算符及其表達(dá)式7 sizeof( )運(yùn)算 表達(dá)式:由運(yùn)算符、操作數(shù)及分隔符組成的,能取得一個(gè)值的式子。8 條件運(yùn)算 1. 算術(shù)運(yùn)算符及其表達(dá)式優(yōu)先級(jí)運(yùn)算符名 稱2+正,單目-負(fù),單目3*乘,雙目/除,

32、雙目%求余,雙目4+加,雙目-減,雙目整數(shù)的算術(shù)運(yùn)算: / 為整除 如: 5/4/結(jié)果為1,整數(shù) % 求余運(yùn)算,也稱求模運(yùn)算,結(jié)果為兩個(gè)整數(shù)相除后的余數(shù)。如果兩個(gè)整數(shù)中有負(fù)數(shù),則先用兩數(shù)絕對(duì)值求余,最后結(jié)果的符號(hào)與被除數(shù)相同(VC+)。例如 6%3 /結(jié)果為0 6%7/結(jié)果為6 7%6/結(jié)果為1 -7%6 /結(jié)果為-1 7%-6/結(jié)果為1 -7%-6 /結(jié)果為-1實(shí)數(shù)的算術(shù)運(yùn)算: 只要有一個(gè)操作數(shù)是實(shí)數(shù),兩個(gè)操作數(shù)均轉(zhuǎn)換為double型,例如: 5/4.0/結(jié)果為1.25,實(shí)數(shù) 注意:運(yùn)算符總是與操作數(shù)封裝在一起。相同的運(yùn)算符對(duì)不同類型的操作數(shù)執(zhí)行的運(yùn)算是有差異的。算術(shù)表達(dá)式:注意:1、表達(dá)式

33、中每個(gè)變量都有確定的值時(shí)才能進(jìn)行表達(dá)式求值;2、算術(shù)運(yùn)算應(yīng)注意數(shù)據(jù)溢出問題,即運(yùn)算結(jié)果超出對(duì)應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會(huì)對(duì)除法運(yùn)算時(shí)除數(shù)為0這種情況提示出錯(cuò),因此,程序設(shè)計(jì)者必須在程序中解決檢查并處理整數(shù)溢出問題。由算術(shù)運(yùn)算符、操作數(shù)和括號(hào)連接而成的表達(dá)式。如:a+b*3 2.賦值運(yùn)算符與賦值表達(dá)式 賦值通過賦值運(yùn)算符“=”來完成,其意義是將賦值號(hào)右邊的值送到左邊變量所對(duì)應(yīng)的內(nèi)存單元中。賦值號(hào)不是等號(hào),它具有方向性。 下面的賦值運(yùn)算是錯(cuò)誤的:3.1415926=pi;/左值不能是常數(shù)x+y=z;/左值不能是表達(dá)式const int N=30;N=40;/左值不能是常變量2.賦值運(yùn)算符與賦

34、值表達(dá)式賦值表達(dá)式: 由賦值運(yùn)算符連接的表達(dá)式。格式為: 變量 = 表達(dá)式 例如:x=5+6; a=b=c=d+1; 賦值表達(dá)式本身也有值,其左值就是賦值表達(dá)式的值。 賦值表達(dá)式的求解過程是:(1)先計(jì)算賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;(2)將賦值運(yùn)算符右側(cè)“表達(dá)式”的值賦值給左側(cè)的變量;(3)整個(gè)賦值表達(dá)式的值就是被賦值變量的值。2.賦值運(yùn)算符與賦值表達(dá)式復(fù)合運(yùn)賦值算符:由雙目算術(shù)運(yùn)算符和位運(yùn)算符與賦值運(yùn)算符組合成的單一運(yùn)算符,共10個(gè): + = = * = / = % = = &= | = = 格式為: 變量 復(fù)合賦值運(yùn)算符 表達(dá)式 它等同于 變量 = 變量 運(yùn)算符 表達(dá)式 例如:x+=5

35、 等同于:x=x+5 x*=y+3等同于:x=x*(y+3)賦值表達(dá)式舉例a=5表達(dá)式值為5a=b=c=5表達(dá)式值為5,a,b,c均為5a=5+(c=6)表達(dá)式值為11,a為11,c為6a=(b=4)+(c=6)表達(dá)式值為10,a為10,b為4,c為6a=(b=10)/(c=2)表達(dá)式值為5,a為5,b為10,c為2a+=a-=a*a 相當(dāng)于: a=a+(a=a-a*a)Page 663.自增自減運(yùn)算前置和后置運(yùn)算前置是先增減后引用,即先對(duì)變量自加或自減,用新的值參與其他運(yùn)算;后置則是先引用后增減,即用變量原來的值參與其他運(yùn)算,然后再對(duì)變量進(jìn)行自加或自減,+ -意義:使變量當(dāng)前值加1或減1,再

36、賦給該變量。要求:操作數(shù)只能是變量,不能是常量或表達(dá)式; 自增、自減運(yùn)算符 (難點(diǎn)) + i6i37 int i, j; i=3; j = +i;i=4 j=4 +在前, 先運(yùn)算,后賦值 int i, j; i=3; j = i+;i=4 j=3 +在后, 先賦值,后運(yùn)算j44i3j34例如:i=6; i+; i=6; +i; i67例:int a=2,j,k; a+; /a的值為3 j=+a; /a的值為4,j的值為4 k=a+; /k的值為4,a的值為5 couta+; /輸出5,a的值為6 coutc+d /*等同于(a+b)(c+d), 結(jié)果為0或1*/y=ab /*計(jì)算ab的值0或1

37、 賦給y,y的值為0或1*/abc /*等同于(ab)c,先求ab 的值, 再將結(jié)果0或1與c比較大小*/4.關(guān)系和邏輯運(yùn)算一些實(shí)數(shù)在計(jì)算機(jī)內(nèi)部表示的是其近似值,用關(guān)系運(yùn)算符直接對(duì)浮點(diǎn)數(shù)進(jìn)行比較,有時(shí)會(huì)得出錯(cuò)誤的結(jié)果。應(yīng)避免對(duì)兩個(gè)實(shí)數(shù)進(jìn)行“=”和“!=”比較運(yùn)算 x = y可寫成:fabs(x-y)1e-64.關(guān)系和邏輯運(yùn)算優(yōu)先級(jí)運(yùn)算符名 稱語 義2!邏輯非, 單目操作數(shù)的值為真,則結(jié)果為假;反之結(jié)果為真11&邏輯與,雙目當(dāng)兩個(gè)操作數(shù)全為真時(shí),結(jié)果為真,否則為假;12|邏輯或,雙目?jī)蓚€(gè)操作數(shù)中有一個(gè)為真,則結(jié)果為真;邏輯運(yùn)算符包括:!、&和|,其優(yōu)先級(jí)和語義見下表。4.關(guān)系和邏輯運(yùn)算由邏輯運(yùn)算

38、符連接的表達(dá)式。其操作數(shù)和運(yùn)算結(jié)果均為邏輯值。在C+中0對(duì)應(yīng)假,而一切非0值都對(duì)應(yīng)真。 21&0/邏輯與,21與0,結(jié)果為假:021|0/邏輯或,21或0,結(jié)果為真:1!21/邏輯非,21的非,結(jié)果為假:0ab&bc /表示a大于b大于c邏輯表達(dá)式:邏輯表達(dá)式計(jì)算時(shí),邏輯非優(yōu)先級(jí)最高,關(guān)系運(yùn)算其次,邏輯與和邏輯或最低。 已知: int a=10, b=20, c=30;float x=1.8, y=2.4; ay|ab-!c按優(yōu)先級(jí)與結(jié)合性,其求值順序等同于:(ay)|(a(b-(!c)t1=1 t2=0t4=0 -&t3=0t5=bt6=1| 得整個(gè)表達(dá)式的值為:1邏輯表達(dá)式求值的優(yōu)化:在求

39、邏輯表達(dá)式值的過程中,一旦表達(dá)式的值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。稱為“求值優(yōu)化”。已知: int a=3, b=0;求: !a &a+b&a+t1=0整個(gè)表達(dá)式的值為 0可見: 表達(dá)式 a+ 已不需要計(jì)算所以: a不變?nèi)詾?3編程人員在使用邏輯運(yùn)算時(shí)應(yīng)當(dāng)加以小心,優(yōu)化計(jì)算固然提高了運(yùn)算效率,但可能產(chǎn)生副作用。所謂副作用,就是出乎設(shè)計(jì)人員的意料,得到預(yù)想不到的結(jié)果。5. 位運(yùn)算 在C+中提供了對(duì)整型和枚舉類型數(shù)據(jù)按操作數(shù)的各個(gè)二進(jìn)制位分別進(jìn)行運(yùn)算的操作,包括:邏輯位運(yùn)算和移位運(yùn)算。 在一些系統(tǒng)軟件中往往需要多種標(biāo)志狀態(tài),用來控制寄存器等底層部件的狀態(tài)。而為了節(jié)約內(nèi)存往往將這些標(biāo)志組合到一

40、個(gè)字或字節(jié)中,位運(yùn)算就能通過與特定的數(shù)作用從而提取出相應(yīng)位的標(biāo)志。位運(yùn)算最大的作用是提高空間使用效率和運(yùn)算速度。這在低配置環(huán)境如單片機(jī)或大運(yùn)算量如人工智能方面都是很重要的。 (1)按位取反運(yùn)算符“”將操作數(shù)的每個(gè)二進(jìn)制位取反,即1變?yōu)?,0變?yōu)?。例如,整數(shù)a的值為10011011,則a的值為01100100。該運(yùn)算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一個(gè)中間量,這個(gè)中間量被引用后即不再存在。 5. 位運(yùn)算(2)按位與運(yùn)算符“&”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯與運(yùn)算。例如:a 01001101b 00001111a & b 00001101該運(yùn)算可用來將整數(shù)的某些位置0,而保留所需要的位,上例

41、保留了低四位。(3)按位或運(yùn)算符“|”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位邏輯或運(yùn)算。例如:a 01001101b 00001111a | b 01001111該運(yùn)算符可用來將整數(shù)的某些位置1。上例高四位不變,低四位全1。5. 位運(yùn)算s = (s | 0 x40) /把第7位設(shè)置為1(從低位開始數(shù))s = (s & 0 xF7) /把第4位設(shè)置為0 (4)按位異或運(yùn)算符“”將兩個(gè)操作數(shù)的對(duì)應(yīng)位逐一進(jìn)行按位異或運(yùn)算。運(yùn)算規(guī)則為:當(dāng)對(duì)應(yīng)位的值不同時(shí),該位運(yùn)算結(jié)果為1,否則為0。例如:a 01001101b 00001111a b 01000010該運(yùn)算符可用來將一個(gè)整數(shù)的某些位取反,或?qū)⒄妥兞康闹抵?/p>

42、0(將整型變量與自身按位異或)。上例低四位取反,高四位不變。5. 位運(yùn)算(5)左移運(yùn)算符“”運(yùn)算一般格式為:an其中a為整數(shù),n為一個(gè)正整數(shù)。語義為將a的值依次向左移動(dòng)n個(gè)二進(jìn)制位,并在低位補(bǔ)0。例如:0 x3F61 ”將左操作數(shù)向右移動(dòng)右操作數(shù)指定的二進(jìn)制位數(shù),低位舍棄,高位按下面規(guī)則處理:對(duì)于無符號(hào)數(shù)或有符號(hào)的非負(fù)數(shù),高位補(bǔ)0 對(duì)于有符號(hào)數(shù),高位與原來的最高位相同 一個(gè)整數(shù)右移n位相當(dāng)于除以2的n次方,但比除法快。 5. 位運(yùn)算6.逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式用逗號(hào)連接起來的表達(dá)式稱為逗號(hào)表達(dá)式, (C+中,逗號(hào)既是分隔符,又是運(yùn)算符。)格式為:表達(dá)式1,表達(dá)式2,表達(dá)式n逗號(hào)表達(dá)式中的每一個(gè)表

43、達(dá)式都會(huì)被運(yùn)算,整個(gè)逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值。例如:a=(x=3,x+=6,5+6);/a=11 x=97. sizeof( ) 運(yùn)算符計(jì)算某類型的數(shù)據(jù)占用的內(nèi)存大?。ㄗ止?jié)數(shù))。一般格式為:sizeof (數(shù)據(jù)類型名)或 sizeof(表達(dá)式) 例如:sizeof(int) /值為4 sizeof( float) /值為4 double x; sizeof( x) /值為8 8.條件運(yùn)算符與條件表達(dá)式一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3執(zhí)行順序:先求解表達(dá)式1,若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為

44、最終結(jié)果注意:條件運(yùn)算符優(yōu)級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符結(jié)合方向?yàn)樽杂抑磷蟊磉_(dá)式1、2、3的類型可以不同,條件表達(dá)式的最終類型為 2 和 3 中較高的類型。例:(xy)?x:y (x=0)?x:-x ch= (ch=A& ch0?1:xy? 1 : 1.5 8.條件運(yùn)算符與條件表達(dá)式表達(dá)式的副作用問題 在符合優(yōu)先級(jí)和結(jié)合性的前提下,標(biāo)準(zhǔn)C+對(duì)表達(dá)式中各操作數(shù)的求值次序沒有做統(tǒng)一規(guī)定。 例如:(x+1)*(+x) 由于C+沒有規(guī)定操作符+和+誰先計(jì)算,因此,不同的編譯程序可能會(huì)給出不同的實(shí)現(xiàn):(假設(shè)x初值為1) 先計(jì)算+,則結(jié)果為:4 先計(jì)算+,則結(jié)果為:6 應(yīng)盡量避免把帶副作用的操作符用在復(fù)

45、雜的表達(dá)式中,最好把它們作為單獨(dú)的操作來用。1.7.3 表達(dá)式求解中的數(shù)據(jù)類型轉(zhuǎn)換在C+中,進(jìn)行運(yùn)算前有時(shí)需要對(duì)操作數(shù)進(jìn)行類型轉(zhuǎn)換,特別是對(duì)一些雙目運(yùn)算符,當(dāng)兩個(gè)操作數(shù)類型不同時(shí),往往要把它們轉(zhuǎn)換成相同類型,操作結(jié)果的類型一般與轉(zhuǎn)換后的操作數(shù)類型相同。C+的類型轉(zhuǎn)換方式有兩種:自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換):由編譯程序按照某種預(yù)定的規(guī)則進(jìn)行自動(dòng)轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換):由寫程序的人在程序中用類型轉(zhuǎn)換操作符明確地指出轉(zhuǎn)換。不管是隱式轉(zhuǎn)換還是顯式轉(zhuǎn)換,都不會(huì)改變被轉(zhuǎn)換的操作數(shù),轉(zhuǎn)換得到的結(jié)果將存儲(chǔ)在臨時(shí)的存儲(chǔ)單元中。 具體規(guī)則:(1)字符可以作為整數(shù)參與數(shù)值運(yùn)算,整數(shù)值為其ASCII碼。(2)操作

46、數(shù)為bool、字符或短整型時(shí),系統(tǒng)自動(dòng)變換成整型。(3)其余情況,當(dāng)兩操作數(shù)類型不同時(shí),將精度低(或表示范圍?。┑牟僮鲾?shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)行運(yùn)算 bool short int unsigned long unsigned long float double long doublechar低 高1. 自動(dòng)類型轉(zhuǎn)換(4)當(dāng)賦值號(hào)的左值和右值的類型不一致但類型相容時(shí),賦值號(hào)右邊的類型轉(zhuǎn)換為左邊的類型。轉(zhuǎn)換規(guī)則如下: 實(shí)型數(shù)賦給整型變量,取整。超過整型變量的取值范圍,溢出。 整數(shù)賦給實(shí)型變量,將整數(shù)轉(zhuǎn)換成實(shí)數(shù)再賦值。 字符數(shù)據(jù)賦給整型變量,將字符轉(zhuǎn)換為整型。無符號(hào)字符數(shù)據(jù),整型變

47、量的低位字節(jié)不變,高位字節(jié)補(bǔ)0;有符號(hào)字符數(shù)據(jù),若符號(hào)位為0,高位字節(jié)補(bǔ)0,若符號(hào)位為1,則整型變量的低位字節(jié)不變,高位字節(jié)全部置1。無符號(hào)整型或長(zhǎng)整型數(shù)賦給整型變量,若數(shù)據(jù)在整型的取值范圍內(nèi),則無需轉(zhuǎn)換,且結(jié)果正確;但若超出取值范圍,則發(fā)生溢出,賦值結(jié)果錯(cuò)誤。該規(guī)則適用于所有將數(shù)值范圍較大的數(shù)賦給數(shù)值范圍較小的數(shù)的情況。 1. 自動(dòng)類型轉(zhuǎn)換例如: 設(shè)有以下定義 double x=2.3,y; int i=2,j;(1) j2.3x2.3 22(1) j=x;(2) y=i;由系統(tǒng)按左值j 、y類型自動(dòng)完成轉(zhuǎn)換功能 (2) y2i2 2.02.01. 自動(dòng)類型轉(zhuǎn)換2. 強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換

48、運(yùn)算符格式為: (type) 表達(dá)式 /形式一或 type (表達(dá)式)/形式二作用:將表達(dá)式強(qiáng)制轉(zhuǎn)換為type類型, 但表達(dá)式的值及其類型不變。設(shè)有變量說明:int a=7, b=5;float x;表達(dá)式 x=a/b的值將為1。如果希望表達(dá)式求出這兩個(gè)整數(shù)相除的實(shí)數(shù)商1.4賦給x,就需要將兩個(gè)操作數(shù)或其中一個(gè)操作數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換。可表示為:x=(float)a/(float)b 或 x=(float)a/b 或 x=a/(float)b 說明:(1)強(qiáng)制類型轉(zhuǎn)換不改變表達(dá)式本身的值類型,而是產(chǎn)生一個(gè)臨時(shí)變量,用來暫存轉(zhuǎn)換后的值,該臨時(shí)變量引用后即自動(dòng)釋放。(2)強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級(jí)較高,只

49、對(duì)緊隨其后的表達(dá)式起作用,而對(duì)其他部分不起作用。(3)以上是C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換,在標(biāo)準(zhǔn)C+中,提供了四個(gè)類型轉(zhuǎn)換關(guān)鍵字:static_cast、const_cast、dynamic_cast、reinterpret_cast。形式為:static_cast(表達(dá)式)等,語法上更嚴(yán)謹(jǐn) 。2. 強(qiáng)制類型轉(zhuǎn)換1.7.4 語句1 說明語句(定義和聲明)2 表達(dá)式語句:表達(dá)式; 3 空語句: ; 4 復(fù)合語句: /若干語句 流程控制語句 (用來控制或改變程序的執(zhí)行方向) 1.8 數(shù)據(jù)的輸入輸出1.8.1 C+輸入輸出簡(jiǎn)介1.8.2 數(shù)據(jù)的輸入輸出1.8.3 C輸入輸出簡(jiǎn)介C/C+語言本身并不帶輸入和輸

50、出(即I/O)功能,而是提供了輸入輸出庫,也稱為I/O庫。大多數(shù)C程序使用標(biāo)準(zhǔn)I/O庫,該庫也能夠在C+中使用,相關(guān)頭文件為stdio.h。在C+程序中,一種稱為iostream(I/O 流庫)的I/O庫用得更多。在C+中,I/O使用了流的概念。每一個(gè)I/O 設(shè)備傳送和接收一系列的字節(jié),稱之為流。輸入操作可以看成是字節(jié)從一個(gè)設(shè)備流入內(nèi)存,而輸出操作可以看成是字節(jié)從內(nèi)存流出到一個(gè)設(shè)備。流可以看成是輸入輸出設(shè)備的另一個(gè)名字(一個(gè)文件、顯示器、鍵盤等)。 1.8.1 C+輸入輸出簡(jiǎn)介要使用C+標(biāo)準(zhǔn)的I/O流庫的功能,需要包括兩個(gè)頭文件:iostream和iomanip,形式如下:#include#i

51、nclude using namespace std;iostream文件提供基本的輸入輸出功能,iomanip文件提供格式化的功能程序,如果不需要格式化輸入輸出,可以不需要該文件。通過包含iostream流庫,內(nèi)存中就創(chuàng)建了一些用于處理輸入和輸出操作的對(duì)象。標(biāo)準(zhǔn)的輸入流對(duì)象(通常是鍵盤)為cin,標(biāo)準(zhǔn)的輸出流對(duì)象(通常是顯示器)為cout。 1.8.1 C+輸入輸出簡(jiǎn)介cin用來在程序執(zhí)行期間給一個(gè)變量或多個(gè)變量輸入數(shù)據(jù),一般格式為:cin變量名1變量名2變量名n;其中,“”稱為提取運(yùn)算符,程序執(zhí)行到這條語句時(shí)便暫停下來,等待用戶從鍵盤上輸入相應(yīng)數(shù)據(jù),直到所列出的所有變量均獲得值后,程序才繼

52、續(xù)執(zhí)行。例如:int a;double b;cinab; /從鍵盤輸入一個(gè)整數(shù)和實(shí)數(shù) /數(shù)據(jù)之間用空格符、制表符或Enter鍵間隔。1.8.1 C+輸入輸出簡(jiǎn)介cout實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器,一般格式為:cout表達(dá)式l表達(dá)式2表達(dá)式 n;其中,“”稱為插入運(yùn)算符,它將緊跟其后的表達(dá)式的值輸出到顯示器光標(biāo)位置處。 例如:int d=5;cout d; / 輸出d的值5 cout d endl; / 輸出d的值5并換行cout “This is the value of d : ” d endl; /先輸出字符串,再輸出d的值5,最后換行(換行也可以使用n)1.8.1 C+輸入輸出簡(jiǎn)介1.8.2

53、 數(shù)據(jù)的輸入/輸出 1字符的輸入/輸出用cin為字符變量輸入數(shù)據(jù)時(shí),輸入的各字符之間可以間隔開,也可以無間隔,系統(tǒng)會(huì)自動(dòng)跳過輸入行中的間隔符。從鍵盤輸入數(shù)據(jù)的個(gè)數(shù)、順序、類型必須與cin中所列的變量對(duì)應(yīng),否則將造成輸入數(shù)據(jù)錯(cuò)誤,同時(shí)影響后面數(shù)據(jù)的提取,而且很多情況下程序并不給出錯(cuò)誤提示。1.8.2 數(shù)據(jù)的輸入/輸出 如果希望將鍵盤上輸入的所有字符(包括間隔符)都作為輸入字符賦給字符變量,則必須使用函數(shù)cin.get()。cin.get()函數(shù)一次只能提取一個(gè)字符,其格式為:cin.get(字符變量);例如:char c1,c2,c3,c4;cin.get(c1);cin.get(c2);cin

54、.get(c3);cin.get(c4);程序執(zhí)行過程中若輸入:A b /Ab間有空格C則字符A、空格、b、Enter鍵將分別賦給變量c1、c2、c3、c4;輸入緩沖區(qū)中保留字符C和Enter鍵。1.8.2 數(shù)據(jù)的輸入/輸出 2非十進(jìn)制整型數(shù)據(jù)的輸入/輸出#include /包含頭文件using namespace std; /使用名字空間int main() int a, b, c, d,e; coutInput a(dec),b(oct), c(hex), d(hex), e(dec): a; /輸入為十進(jìn)制數(shù) cin oct b;/輸入為八進(jìn)制數(shù) cin hex c;/輸入為十六進(jìn)制數(shù)

55、cin d;/輸入仍為十六進(jìn)制數(shù) cin dec e;/輸入為十進(jìn)制數(shù)couthex: a= hex aendl; /十六進(jìn)制形式輸出a的值coutdec: b= dec bendl; /十進(jìn)制形式輸出b的值coutdec: c= c endl; /十進(jìn)制形式輸出c的值coutoct: d= octdendl; /八進(jìn)制形式輸出d的值coutoct: e=eendl; /八進(jìn)制形式輸出e的值cout dec endl; /恢復(fù)十進(jìn)制輸出形式 return 0;執(zhí)行時(shí)輸出:Input a(dec),b(oct), c(hex), d(hex), e(dec):此時(shí)從鍵盤輸入:18 23 4E 5

56、D 67則輸出結(jié)果為:hex: a=12dec: b=19dec: c=78oct: d=135oct: e=103注意:使用不帶.h的頭文件時(shí),必須在cin語句中指明數(shù)制,否則從鍵盤輸入時(shí),不認(rèn)八進(jìn)制和十六進(jìn)制數(shù)開頭的0和0 x標(biāo)志。指明后可省略0和0 x標(biāo)志。在cin和cout中指明數(shù)制后,將一直有效,直到重新指明其他數(shù)制為止。 1.8.2 數(shù)據(jù)的輸入/輸出 3.設(shè)置輸出數(shù)據(jù)項(xiàng)的寬度為了使數(shù)據(jù)間隔開,還可以用C+提供的函數(shù)setw() 指定輸出數(shù)據(jù)項(xiàng)的寬度。 #include #include using namespace std;int main()int a=2;float x=1.

57、5;cout*endl;coutsetw(4)asetw(8)xendl; coutsetw(4)*endl; coutsetw(2)xsetw(5)aendl; coutsetw(14)*endl; return 0;程序運(yùn)行結(jié)果為: * 2 1.5 * 1.5 2 *1.8.2 數(shù)據(jù)的輸入/輸出 setw()中設(shè)置一個(gè)正整數(shù)值,它限定緊跟其后的一個(gè)數(shù)據(jù)項(xiàng)的輸出寬度。如果數(shù)據(jù)的實(shí)際寬度小于指定寬度,則按右對(duì)齊方式在左邊留空格。如果數(shù)據(jù)的實(shí)際寬度大于指定寬度,則按實(shí)際寬度輸出。注意使用setw() 必須在程序的開始處有文件包含指令:#include 。 1.8.3 C輸入輸出簡(jiǎn)介C輸入輸出使用

58、標(biāo)準(zhǔn)I/O庫函數(shù)頭文件stdio.h字符輸入輸出gerchar(),putchar()格式化輸入輸出 scanf(),printf()#includemain() char c; c=getchar(); putchar(c); printf(n); int i; float f; scanf(%d%f,&i,&f); printf(%d %f,i,f);例格式化輸出 printf()格式:printf( “格式字符串”, 表達(dá)式, . );將表達(dá)式按照“格式字符串”給定的格式,顯示在屏幕上?!案袷阶址卑ㄎ谋咀址?、轉(zhuǎn)義字符和格式說明符。例:printf(Today is Thursday

59、); 執(zhí)行結(jié)果為: Today is Thursday 1.8.3 C輸入輸出簡(jiǎn)介如變量說明int x = 98;float y = 1.34567889; char letter = A; char word = Hello;語句:printf(Default formats: %d %f %c %sn, x,y,letter,word); 結(jié)果Default formats: 98 1.345679 A Hello 語句:printf(Width specified: %5d %10.4f %5c %10sn, x,y,letter,word);結(jié)果Width specified: 98

60、1.3457 A Hello1.8.3 C輸入輸出簡(jiǎn)介格式化輸入scanf()格式:scanf(“格式字符串”, 地址,);用“格式字符串”控制鍵盤讀入的方式。“格式字符串”中一般只包括格式說明符,“地址”是指變量在內(nèi)存中的位置。如:printf(Enter a character: );scanf(%c, &ch);printf(Enter a string: );scanf(%s, word);1.8.3 C輸入輸出簡(jiǎn)介第2章 程序的控制結(jié)構(gòu)學(xué)習(xí)內(nèi)容:1算法的概念,表示方法;2if、switch的用法;3for循環(huán)、while循環(huán)和do-while循環(huán)語句的用法;4break和contin

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論