版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序設(shè)計(jì) 中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材 譚浩強(qiáng) 編著 總 目 錄 第1篇 基 本 知 識(shí) 第1章 C+的初步知識(shí) 第2章 數(shù)據(jù)類型與表達(dá)式 第2篇 面向過(guò)程的程序設(shè)計(jì) 第3章 程序設(shè)計(jì)初步 第4章 函數(shù)與預(yù)處理 第5章 數(shù)組 第6章 指針 第7章 自定義數(shù)據(jù)類型 第3篇 基于對(duì)象的程序設(shè)計(jì) 第8章 類和對(duì)象 第9章 關(guān)于類和對(duì)象的進(jìn)一步討論 第10章 運(yùn)算符重載 第4篇 面向?qū)ο蟮某绦蛟O(shè)計(jì) 第11章 繼承與派生 第12章 多態(tài)性與虛函數(shù) 第13章 輸入輸出流 第14章 C+工具 第1章 C+的初步知識(shí) 第2章 數(shù)據(jù)類型與表達(dá)式 第1篇 基 本 知 識(shí) 第1章 C+的初步知識(shí)
2、*1.1 從C到C+ *1.2 最簡(jiǎn)單的C+程序 1.3 C+程序的構(gòu)成和書(shū)寫(xiě)形式 1.4 C+程序的編寫(xiě)和實(shí)現(xiàn) 1.5 關(guān)于C+上機(jī)實(shí)踐 *1.1 從C到C+ 計(jì)算機(jī)誕生初期,人們要使用計(jì)算機(jī)必須用機(jī)器語(yǔ)言或匯編語(yǔ)言編寫(xiě)程序.世界上第一種計(jì)算機(jī)高級(jí)語(yǔ)言誕生于1954年,它是FORTRAN語(yǔ)言.先后出現(xiàn)了多種計(jì)算機(jī)高級(jí)語(yǔ)言.其中使用最廣泛.影響最大的當(dāng)推BASIC語(yǔ)言和C語(yǔ)言. BASIC語(yǔ)言是1964年在FORTRAN語(yǔ)言的基礎(chǔ)上簡(jiǎn)化而成的,它是為初學(xué)者設(shè)計(jì)的小型高級(jí)語(yǔ)言. C語(yǔ)言是1972年由美國(guó)貝爾實(shí)驗(yàn)室的研制成功的.它不是為初學(xué)者設(shè)計(jì)的,而是為計(jì)算機(jī)專業(yè)人員設(shè)計(jì)的.大多數(shù)系統(tǒng)軟件和許多
3、應(yīng)用軟件都是用C語(yǔ)言編寫(xiě)的. 但是隨著軟件規(guī)模的增大,用C語(yǔ)言編寫(xiě)程序漸漸顯得有些吃力了. C+是由AT&T Bell(貝爾)實(shí)驗(yàn)室的Bjarne Stroustrup博士及其同事于20世紀(jì)80年代初在C語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)成功的.C+保留了C語(yǔ)言原有的所有優(yōu)點(diǎn),增加了面向?qū)ο蟮臋C(jī)制. C+是由C發(fā)展而來(lái)的,與C兼容.用C語(yǔ)言寫(xiě)的程序基本上可以不加修改地用于C+.從C+的名字可以看出它是C的超集.C+既可用于面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì),又可用于面向?qū)ο蟮某绦蛟O(shè)計(jì),是一種功能強(qiáng)大的混合型的程序設(shè)計(jì)語(yǔ)言. C+對(duì)C的增強(qiáng),表現(xiàn)在兩個(gè)方面: (1) 在原來(lái)面向過(guò)程的機(jī)制基礎(chǔ)上,對(duì)C語(yǔ)言的功能做了不
4、少擴(kuò)充. (2) 增加了面向?qū)ο蟮臋C(jī)制. 面向?qū)ο蟪绦蛟O(shè)計(jì),是針對(duì)開(kāi)發(fā)較大規(guī)模的程序而提出來(lái)的,目的是提高軟件開(kāi)發(fā)的效率. 不要把面向?qū)ο蠛兔嫦蜻^(guò)程對(duì)立起來(lái),面向?qū)ο蠛兔嫦蜻^(guò)程不是矛盾的,而是各有用途.互為補(bǔ)充的. 學(xué)習(xí)C+,既要會(huì)利用C+進(jìn)行面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì),也要會(huì)利用C+進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì).本書(shū)既介紹C+在面向過(guò)程程序設(shè)計(jì)中的應(yīng)用,也介紹C+在面向?qū)ο蟪绦蛟O(shè)計(jì)中的應(yīng)用. *1.2 最簡(jiǎn)單的C+程序 例1.1 輸出一行字符: This is a C+ program. 程序如下: #include <iostream> /包含頭文件iostream using nam
5、espace std; /使用命名空間std int main( ) cout<<This is a C+ program.; return 0; 在運(yùn)行時(shí)會(huì)在屏幕上輸出以下一行信息: This is a C+ program. 用main代表主函數(shù)的名字.每一個(gè)C+程序都必須有一個(gè) main 函數(shù).main前面的int的作用是聲明函數(shù)的類型為整型.程序第6行的作用是向操作系統(tǒng)返回一個(gè)零值.如果程序不能正常執(zhí)行,則會(huì)自動(dòng)向操作系統(tǒng)返回一個(gè)非零值,一般為-1. 函數(shù)體是由大括號(hào) 括起來(lái)的.本例中主函數(shù)內(nèi)只有一個(gè)以cout開(kāi)頭的語(yǔ)句.注意C+所有語(yǔ)句最后都應(yīng)當(dāng)有一個(gè)分號(hào). 再看程序的第
6、1行#include <iostream>,這不是C+的語(yǔ)句,而是C+的一個(gè)預(yù)處理命令,它以#開(kāi)頭以與C+語(yǔ)句相區(qū)別,行的末尾沒(méi)有分號(hào).#include <iostream>是一個(gè)包含命令,它的作用是將文件iostream的內(nèi)容包含到該命令所在的程序文件中,代替該命令行.文件iostream的作用是向程序提供輸入或輸出時(shí)所需要的一些信息.iostream是i-o-stream 3個(gè)詞的組合,從它的形式就可以知道它代表輸入輸出流的意思,由于這類文件都放在程序單元的開(kāi)頭,所以稱為頭文件(head file).在程序進(jìn)行編譯時(shí),先對(duì)所有的預(yù)處理命令進(jìn)行處理,將頭文件的具體內(nèi)容
7、代替 #include命令行,然后再對(duì)該程序單元進(jìn)行整體編譯. 程序的第2行using namespace std; 的意思是使用命名空間std.C+標(biāo)準(zhǔn)庫(kù)中的類和函數(shù)是在命名空間std中聲明的,因此程序中如果需要用到C+標(biāo)準(zhǔn)庫(kù)(此時(shí)就需要用#include命令行),就需要用using namespace std; 作聲明,表示要用到命名空間std中的內(nèi)容. 在初學(xué)C+時(shí),對(duì)本程序中的第1,2行可以不必深究,只需知道: 如果程序有輸入或輸出時(shí),必須使用#include <iostream>命令以提供必要的信息,同時(shí)要用using namespace std; ,使程序能夠使用這些信
8、息,否則程序編譯時(shí)將出錯(cuò). 例1.2 求a和b兩個(gè)數(shù)之和. 可以寫(xiě)出以下程序: / 求兩數(shù)之和 (本行是注釋行) #include <iostream> /預(yù)處理命令 using namespace std; /使用命名空間std int main( ) /主函數(shù)首部 /函數(shù)體開(kāi)始 int a,b,sum; /定義變量 cin>>a>>b; /輸入語(yǔ)句 sum=a+b;/賦值語(yǔ)句 cout<<a+b=<<sum<<endl; /輸出語(yǔ)句 return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值 /函數(shù)結(jié)束 本程序的作用
9、是求兩個(gè)整數(shù)a和b之和sum.第1行/求兩數(shù)之和是一個(gè)注釋行,C+規(guī)定在一行中如果出現(xiàn)/,則從它開(kāi)始到本行末尾之間的全部?jī)?nèi)容都作為注釋. 如果在運(yùn)行時(shí)從鍵盤(pán)輸入 123 456 則輸出為 a+b=579 例1.3 給兩個(gè)數(shù)x和y,求兩數(shù)中的大者. 在本例中包含兩個(gè)函數(shù). #include <iostream> /預(yù)處理命令 using namespace std; int max(int x,int y)/定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型 /max函數(shù)體開(kāi)始 int z;/變量聲明,定義本函數(shù)中用到的變量z為整型 if(x>y) z=x;/if語(yǔ)句,如果x&
10、gt;y,則將x的值賦給z else z=y; /否則,將y的值賦給z return(z);/將z的值返回,通過(guò)max帶回調(diào)用處 /max函數(shù)結(jié)束 int main( ) /主函數(shù) /主函數(shù)體開(kāi)始 int a,b,m;/變量聲明 cin>>a>>b;/輸入變量a和b的值 m=max(a,b); /調(diào)用max函數(shù),將得到的值賦給m cout<<max=<<m<<n;/輸出大數(shù)m的值 return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值 /主函數(shù)結(jié)束 本程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用的函數(shù)max. 程序運(yùn)行情況如下: 1
11、8 25 (輸入18和25給a和b) max=25 (輸出m的值) 注意輸入的兩個(gè)數(shù)據(jù)間用一個(gè)或多個(gè)空格間隔,不能以逗號(hào)或其他符號(hào)間隔. 在上面的程序中,max函數(shù)出現(xiàn)在main函數(shù)之前,因此在main函數(shù)中調(diào)用max函數(shù)時(shí),編譯系統(tǒng)能識(shí)別max是已定義的函數(shù)名.如果把兩個(gè)函數(shù)的位臵對(duì)換一下,即先寫(xiě)main函數(shù),后寫(xiě)max函數(shù),這時(shí)在編譯main函數(shù)遇到max時(shí),編譯系統(tǒng)無(wú)法知道m(xù)ax代表什么含義,因而無(wú)法編譯,按出錯(cuò)處理. 為了解決這個(gè)問(wèn)題,在主函數(shù)中需要對(duì)被調(diào)用函數(shù)作聲明.上面的程序可以改寫(xiě)如下: #include <iostream> using namespace std;
12、 int main( ) int max(int x,int y);/對(duì)max函數(shù)作聲明 int a,b,c; cin>>a>>b; c=max(a,b); /調(diào)用max函數(shù) cout<<max=<<c<<endl; return 0; int max(int x,int y)/定義max函數(shù) int z; if(x>y) z=x; else z=y; return(z); 只要在被調(diào)用函數(shù)的首部的末尾加一個(gè)分號(hào),就成為對(duì)該函數(shù)的函數(shù)聲明.函數(shù)聲明的位臵應(yīng)當(dāng)在函數(shù)調(diào)用之前. 下面舉一個(gè)包含類(class)和對(duì)象(object)的
13、C+程序,目的是使讀者初步了解C+是怎樣體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的. 例1.4 包含類的C+程序. #include <iostream>/ 預(yù)處理命令 using namespace std; class Student/ 聲明一個(gè)類,類名為Student private: / 以下為類中的私有部分 int num; / 私有變量num int score; / 私有變量score public: / 以下為類中的公用部分 void setdata( ) / 定義公用函數(shù)setdata cin>>num; / 輸入num的值 cin>>score; / 輸
14、入score的值 void display( ) / 定義公用函數(shù)display cout<<num=<<num<<endl; / 輸出num的值 cout<<score=<<score<<endl;/輸出score的值 ; ; / 類的聲明結(jié)束 Student stud1,stud2; /定義stud1和stud2為Student類的變量,稱為對(duì)象 int main( )/ 主函數(shù)首部 stud1.setdata( ); / 調(diào)用對(duì)象stud1的setdata函數(shù) stud2.setdata( ); / 調(diào)用對(duì)象stud
15、2的setdata函數(shù) stud1.display( ); / 調(diào)用對(duì)象stud1的display函數(shù) stud2.display( ); / 調(diào)用對(duì)象stud2的display函數(shù) return 0; 在一個(gè)類中包含兩種成員: 數(shù)據(jù)和函數(shù),分別稱為數(shù)據(jù)成員和成員函數(shù).在C+中把一組數(shù)據(jù)和有權(quán)調(diào)用這些數(shù)據(jù)的函數(shù)封裝在一起,組成一種稱為類(class)的數(shù)據(jù)結(jié)構(gòu).在上面的程序中,數(shù)據(jù)成員num,score和成員函數(shù)setdata,display組成了一個(gè)名為Student的類類型.成員函數(shù)是用來(lái)對(duì)數(shù)據(jù)成員進(jìn)行操作的.也就是說(shuō),一個(gè)類是由一批數(shù)據(jù)以及對(duì)其操作的函數(shù)組成的. 類可以體現(xiàn)數(shù)據(jù)的封裝性和
16、信息隱蔽.在上面的程序中,在聲明Student類時(shí),把類中的數(shù)據(jù)和函數(shù)分為兩大類: private(私有的)和public(公用的).把全部數(shù)據(jù)(num,score)指定為私有的,把全部函數(shù)(setdata,display)指定為公用的.在大多數(shù)情況下,會(huì)把所有數(shù)據(jù)指定為私有,以實(shí)現(xiàn)信息隱蔽. 具有類類型特征的變量稱為對(duì)象(object). 程序中第1824行是主函數(shù). 程序運(yùn)行情況如下: 1001 98.5 (輸入學(xué)生1的學(xué)號(hào)和成績(jī)) 1002 76.5 (輸入學(xué)生2的學(xué)號(hào)和成績(jī)) num=1001 (輸出學(xué)生1的學(xué)號(hào)) score=98.5 (輸出學(xué)生1的成績(jī)) num=1002 (輸出學(xué)
17、生2的學(xué)號(hào)) score=76.5 (輸出學(xué)生2的成績(jī)) 1.3 C+程序的構(gòu)成和書(shū)寫(xiě)形式 C+程序的結(jié)構(gòu)和書(shū)寫(xiě)格式歸納如下: (1) 一個(gè)C+程序可以由一個(gè)程序單位或多個(gè)程序單位構(gòu)成.每一個(gè)程序單位作為一個(gè)文件.在程序編譯時(shí),編譯系統(tǒng)分別對(duì)各個(gè)文件進(jìn)行編譯,因此,一個(gè)文件是一個(gè)編譯單元. (2) 在一個(gè)程序單位中,可以包括以下幾個(gè)部分: 預(yù)處理命令.上節(jié)4個(gè)程序中都包括#include命令. 全局聲明部分(在函數(shù)外的聲明部分).在這部分中包括對(duì)用戶自己定義的數(shù)據(jù)類型的聲明和程序中所用到的變量的定義. 函數(shù).函數(shù)是實(shí)現(xiàn)操作的部分,因此函數(shù)是程序中必須有的和最基本的組成部分.每一個(gè)程序必須包括一
18、個(gè)或多個(gè)函數(shù),其中必須有一個(gè)(而且只能有一個(gè))主函數(shù)(main函數(shù)). 但是并不要求每一個(gè)程序文件都必須具有以上3個(gè)部分,可以缺少某些部分(包括函數(shù)). (3) 一個(gè)函數(shù)由兩部分組成: 函數(shù)首部,即函數(shù)的第一行.包括函數(shù)名.函數(shù)類型.函數(shù)屬性.函數(shù)參數(shù)(形參)名.參數(shù)類型. 一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào), 函數(shù)參數(shù)可以缺省,如int main( ). 函數(shù)體,即函數(shù)首部下面的大括號(hào)內(nèi)的部分.如果在一個(gè)函數(shù)中有多個(gè)大括號(hào),則最外層的一對(duì) 為函數(shù)體的范圍. 函數(shù)體一般包括: . 局部聲明部分 (在函數(shù)內(nèi)的聲明部分).包括對(duì)本函數(shù)中所用到的類型.函數(shù)的聲明和變量的定義. 對(duì)數(shù)據(jù)的聲明既可以放在函數(shù)
19、之外(其作用范圍是全局的),也可以放在函數(shù)內(nèi)(其作用范圍是局部的,只在本函數(shù)內(nèi)有效). . 執(zhí)行部分.由若干個(gè)執(zhí)行語(yǔ)句組成,用來(lái)進(jìn)行有關(guān)的操作,以實(shí)現(xiàn)函數(shù)的功能. (4) 語(yǔ)句包括兩類.一類是聲明語(yǔ)句,另一類是執(zhí)行語(yǔ)句. C+對(duì)每一種語(yǔ)句賦予一種特定的功能.語(yǔ)句是實(shí)現(xiàn)操作的基本成分,顯然,沒(méi)有語(yǔ)句的函數(shù)是沒(méi)有意義的.C+語(yǔ)句必須以分號(hào)結(jié)束. (5) 一個(gè)C+程序總是從main函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位臵如何. (6) 類(class)是C+新增加的重要的數(shù)據(jù)類型,是C+對(duì)C的最重要的發(fā)展.有了類,就可以實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的封裝.信息隱蔽.繼承.派生.多態(tài)等功能.
20、在一個(gè)類中可以包括數(shù)據(jù)成員和成員函數(shù),他們可以被指定為私有的(private)和公用的(public)屬性.私有的數(shù)據(jù)成員和成員函數(shù)只能被本類的成員函數(shù)所調(diào)用. (7)C+程序書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句, 一個(gè)語(yǔ)句可以分寫(xiě)在多行上.C+程序沒(méi)有行號(hào),也不像FORTRAN或COBOL那樣嚴(yán)格規(guī)定書(shū)寫(xiě)格式(語(yǔ)句必須從某一列開(kāi)始書(shū)寫(xiě)). (8) 一個(gè)好的.有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性.C+還保留了C語(yǔ)言的注釋形式,可以用/*/對(duì)C+程序中的任何部分作注釋.在/*和*/之間的全部?jī)?nèi)容作為注釋. 用/作注釋時(shí),有效范圍只有一行,即本行有效,不能跨行.而用/*/作注釋
21、時(shí)有效范圍為多行.只要在開(kāi)始處有一個(gè)/*,在最后一行結(jié)束處有一個(gè)*/即可.因此,一般習(xí)慣是: 內(nèi)容較少的簡(jiǎn)單注釋常用/,內(nèi)容較長(zhǎng)的常用/*/ . 1.4 C+程序的編寫(xiě)和實(shí)現(xiàn) 一個(gè)程序從編寫(xiě)到最后得到運(yùn)行結(jié)果要經(jīng)歷以下一些步驟. 1. 用C+語(yǔ)言編寫(xiě)程序 用高級(jí)語(yǔ)言編寫(xiě)的程序稱為源程序(source program).C+的源程序是以.cpp作為后綴的(cpp是c plus plus 的縮寫(xiě)). 2. 對(duì)源程序進(jìn)行編譯 為了使計(jì)算機(jī)能執(zhí)行高級(jí)語(yǔ)言源程序,必須先用一種稱為編譯器(complier)的軟件(也稱編譯程序或編譯系統(tǒng)),把源程序翻譯成二進(jìn)制形式的目標(biāo)程序(object program)
22、. 編譯是以源程序文件為單位分別編譯的.目標(biāo)程序一般以.obj或.o作為后綴(object 的縮寫(xiě)).編譯的作用是對(duì)源程序進(jìn)行詞法檢查和語(yǔ)法檢查.編譯時(shí)對(duì)文件中的全部?jī)?nèi)容進(jìn)行檢查,編譯結(jié)束后會(huì)顯示出所有的編譯出錯(cuò)信息.一般編譯系統(tǒng)給出的出錯(cuò)信息分為兩種,一種是錯(cuò)誤(error);一種是警告(warning) . 3. 將目標(biāo)文件連接 在改正所有的錯(cuò)誤并全部通過(guò)編譯后,得到一個(gè)或多個(gè)目標(biāo)文件.此時(shí)要用系統(tǒng)提供的連接程序(linker)將一個(gè)程序的所有目標(biāo)程序和系統(tǒng)的庫(kù)文件以及系統(tǒng)提供的其他信息連接起來(lái),最終形成一個(gè)可執(zhí)行的二進(jìn)制文件,它的后綴是.exe,是可以直接執(zhí)行的. 4. 運(yùn)行程序 運(yùn)行最
23、終形成的可執(zhí)行的二進(jìn)制文件(.exe文件),得到運(yùn)行結(jié)果. 5. 分析運(yùn)行結(jié)果 如果運(yùn)行結(jié)果不正確,應(yīng)檢查程序或算法是否有問(wèn)題. 圖1.1 1.5 關(guān)于C+上機(jī)實(shí)踐 在了解了C+語(yǔ)言的初步知識(shí)后,讀者最好盡快在計(jì)算機(jī)上編譯和運(yùn)行C+程序,以加深對(duì)C+程序的認(rèn)識(shí),并初步掌握C+的上機(jī)操作. 讀者可以使用不同的C+編譯系統(tǒng),在不同的環(huán)境下編譯和運(yùn)行一個(gè)C+程序.但是需要強(qiáng)調(diào)的是,我們學(xué)習(xí)的是C+程序設(shè)計(jì),應(yīng)當(dāng)掌握的是標(biāo)準(zhǔn)C+,而不應(yīng)該只了解某一種方言化的C+.不應(yīng)當(dāng)只會(huì)使用一種C+編譯系統(tǒng),只能在一種環(huán)境下工作,而應(yīng)當(dāng)能在不同的C+環(huán)境下運(yùn)行自己的程序,并且了解不同的C+編譯系統(tǒng)的特點(diǎn)和使用方法,
24、在需要時(shí)能將自己的程序方便地移植到不同的平臺(tái)上. 在本書(shū)的參考書(shū)C+程序設(shè)計(jì)題解與上機(jī)指導(dǎo)一書(shū)中簡(jiǎn)單介紹了在Visual C+ 6.0和GCC兩種典型的環(huán)境下運(yùn)行C+程序的方法. 請(qǐng)讀者選擇一種(如能做到兩種更好) C+編譯系統(tǒng),在該環(huán)境下輸入和運(yùn)行習(xí)題中的程序,掌握上機(jī)的方法和步驟. 第2章 數(shù)據(jù)類型與表達(dá)式 2.1 C+的數(shù)據(jù)類型 2.2 常量 2.3 變量 2.4 C+的運(yùn)算符 2.5 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 2.6 賦值運(yùn)算符與賦值表達(dá)式 2.7 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式 2.1 C+的數(shù)據(jù)類型 計(jì)算機(jī)處理的對(duì)象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在的(例如整數(shù).浮點(diǎn)數(shù).字符等形式).不同
25、的數(shù)據(jù)之間往往還存在某些聯(lián)系(例如由若干個(gè)整數(shù)組成一個(gè)整數(shù)數(shù)組).數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)的組織形式.例如,數(shù)組就是一種數(shù)據(jù)結(jié)構(gòu).不同的計(jì)算機(jī)語(yǔ)言所允許使用的數(shù)據(jù)結(jié)構(gòu)是不同的.處理同一類問(wèn)題,如果數(shù)據(jù)結(jié)構(gòu)不同,算法也會(huì)不同.例如,對(duì)10個(gè)整數(shù)排序和對(duì)包含10個(gè)元素的整型數(shù)組排序的算法是不同的. C+可以使用的數(shù)據(jù)類型如下: C+的數(shù)據(jù)包括常量與變量,常量與變量都具有類型.由以上這些數(shù)據(jù)類型還可以構(gòu)成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu).例如利用指針和結(jié)構(gòu)體類型可以構(gòu)成表.樹(shù).棧等復(fù)雜的數(shù)據(jù)結(jié)構(gòu). C+并沒(méi)有統(tǒng)一規(guī)定各類數(shù)據(jù)的精度.數(shù)值范圍和在內(nèi)存中所占的字節(jié)數(shù),各C+編譯系統(tǒng)根據(jù)自己的情況作出安排.書(shū)中表2.1列出了V
26、isual C+數(shù)值型和字符型數(shù)據(jù)的情況. 說(shuō)明: (1) 整型數(shù)據(jù)分為長(zhǎng)整型(long int).一般整型(int)和短整型(short int).在int前面加long和short分別表示長(zhǎng)整型和短整型. (2) 整型數(shù)據(jù)的存儲(chǔ)方式為按二進(jìn)制數(shù)形式存儲(chǔ),例如十進(jìn)制整數(shù)85的二進(jìn)制形式為1010101,則在內(nèi)存中的存儲(chǔ)形式如圖2.1所示. 圖2.1 (3) 在整型符號(hào)int和字符型符號(hào)char的前面,可以加修飾符signed(表示“有符號(hào)”)或unsigned(表示“無(wú)符號(hào)”).如果指定為signed,則數(shù)值以補(bǔ)碼形式存放,存儲(chǔ)單元中的最高位(bit)用來(lái)表示數(shù)值的符號(hào).如果指定為unsig
27、ned,則數(shù)值沒(méi)有符號(hào),全部二進(jìn)制位都用來(lái)表示數(shù)值本身.例如短整型數(shù)據(jù)占兩個(gè)字節(jié) ,見(jiàn)圖2.2. 圖2.2 有符號(hào)時(shí),能存儲(chǔ)的最大值為215-1,即32767,最小值為-32768.無(wú)符號(hào)時(shí),能存儲(chǔ)的最大值為216-1,即65535,最小值為0.有些數(shù)據(jù)是沒(méi)有負(fù)值的,可以使用unsigned,它存儲(chǔ)正數(shù)的范圍比用signed時(shí)要大一倍. (4) 浮點(diǎn)型(又稱實(shí)型)數(shù)據(jù)分為單精度(float).雙精度(double)和長(zhǎng)雙精度(long double)3種,在Visual C+ 6.0中,對(duì)float提供6位有效數(shù)字,對(duì)double提供15位有效數(shù)字,并且float和double的數(shù)值范圍不同.
28、對(duì)float分配4個(gè)字節(jié),對(duì)double和long double分配8個(gè)字節(jié). (5) 表中類型標(biāo)識(shí)符一欄中,方括號(hào) 包含的部分可以省寫(xiě),如short和short int等效,unsigned int和unsigned等效. 常量的值是不能改變的,一般從其字面形式即可判別是否為常量.常量包括兩大類,即數(shù)值型常量(即常數(shù))和字符型常量.如12,0,-3為整型常量,4.6,-1.23為實(shí)型常量,包含在兩個(gè)單撇號(hào)之間的字符為字符常量,如a,x.這種從字面形式即可識(shí)別的常量稱為“字面常量”或“直接常量”. 2.2 常量 2.2.1 什么是常量 2.2.2 數(shù)值常量 數(shù)值常量就是通常所說(shuō)的常數(shù).在C+中
29、,數(shù)值常量是區(qū)分類型的,從字面形式即可識(shí)別其類型. 1. 整型常量(整數(shù))的類型 在上一節(jié)中已知道: 整型數(shù)據(jù)可分為int,short int,long int以及unsigned int,unsigned short,unsigned long等類別.整型常量也分為以上類別.為什么將數(shù)值常量區(qū)分為不同的類別呢?因?yàn)樵谶M(jìn)行賦值或函數(shù)的參數(shù)虛實(shí)結(jié)合時(shí)要求數(shù)據(jù)類型匹配. 那么,一個(gè)整型常量怎樣從字面上區(qū)分為以上的類別呢? (1) 一個(gè)整數(shù),如果其值在-32768+32767范圍內(nèi),認(rèn)為它是short int型,它可以賦值給short int型.int型和long int型變量. (2) 一個(gè)整數(shù),
30、如果其值超過(guò)了上述范圍,而在-2147483648+2147483647范圍內(nèi),則認(rèn)為它是long int型,可以將它賦值給一個(gè)int或long int型變量. (3) 如果某一計(jì)算機(jī)系統(tǒng)的C+版本(例如Visual C+)確定int與long int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它們能夠表示的數(shù)值的范圍相同.因此,一個(gè)int型的常量也同時(shí)是一個(gè)long int型常量,可以賦給int型或long int型變量. (4) 常量無(wú)unsigned型.但一個(gè)非負(fù)值的整數(shù)可以賦值給unsigned整型變量,只要它的范圍不超過(guò)變量的取值范圍即可. 一個(gè)整型常量可以用3種不同的方式表示: (1) 十進(jìn)制
31、整數(shù).如1357,-432,0等.在一個(gè)整型常量后面加一個(gè)字母l或L,則認(rèn)為是long int型常量.例如123L,421L,0L等,這往往用于函數(shù)調(diào)用中.如果函數(shù)的形參為long int,則要求實(shí)參也為long int型,此時(shí)用123作實(shí)參不行,而要用123L作實(shí)參. (2) 八進(jìn)制整數(shù).在常數(shù)的開(kāi)頭加一個(gè)數(shù)字0,就表示這是以八進(jìn)制數(shù)形式表示的常數(shù).如020表示這是八進(jìn)制數(shù)20,即(20)8,它相當(dāng)于十進(jìn)制數(shù)16. (3) 十六進(jìn)制整數(shù).在常數(shù)的開(kāi)頭加一個(gè)數(shù)字0和一個(gè)英文字母X(或x),就表示這是以十六進(jìn)制數(shù)形式表示的常數(shù).如0X20表示這是十六進(jìn)制數(shù)20,即(20)16,它相當(dāng)于十進(jìn)制數(shù)3
32、2. 2. 浮點(diǎn)數(shù)的表示方法 一個(gè)浮點(diǎn)數(shù)可以用兩種不同的方式表示: (1) 十進(jìn)制小數(shù)形式.如21.456,-7.98等.它一般由整數(shù)部分和小數(shù)部分組成,可以省略其中之一(如78.或.06,.0),但不能二者皆省略.C+編譯系統(tǒng)把用這種形式表示的浮點(diǎn)數(shù)一律按雙精度常量處理,在內(nèi)存中占8個(gè)字節(jié).如果在實(shí)數(shù)的數(shù)字之后加字母F或f,表示此數(shù)為單精度浮點(diǎn)數(shù),如1234F,-43f,占4個(gè)字節(jié).如果加字母L或l,表示此數(shù)為長(zhǎng)雙精度數(shù)(long double),在GCC中占12個(gè)字節(jié),在Visual C+ 6.0中占8個(gè)字節(jié). (2) 指數(shù)形式(即浮點(diǎn)形式) 一個(gè)浮點(diǎn)數(shù)可以寫(xiě)成指數(shù)形式,如3.14159可
33、以表示為0.314159×101,3.14159×100,31.4159×10-1, 314.159×10-2等形式.在程序中應(yīng)表示為: 0.314159e1,3.14159e0,31.4159e-1 ,314.159e-2,用字母e表示其后的數(shù)是以10為底的冪,如e12表示1012. 其一般形式為 數(shù)符 數(shù)字部分 指數(shù)部分 上面各數(shù)據(jù)中的0.314159,3.14159, 31.4159, 314.159 等就是其中的數(shù)字部分.可以看到: 由于指數(shù)部分的存在,使得同一個(gè)浮點(diǎn)數(shù)可以用不同的指數(shù)形式來(lái)表示,數(shù)字部分中小數(shù)點(diǎn)的位臵是浮動(dòng)的.例如: a=0.3
34、14159e1; a=3.14159e0; a=31.4159e-1; a=314.159e-2; 以上4個(gè)賦值語(yǔ)句中,用了不同形式的浮點(diǎn)數(shù),但其作用是相同的. 在程序中不論把浮點(diǎn)數(shù)寫(xiě)成小數(shù)形式還是指數(shù)形式,在內(nèi)存中都是以指數(shù)形式(即浮點(diǎn)形式)存儲(chǔ)的.例如不論在程序中寫(xiě)成314.159或314.159e0,31.4159e1,3.14159e2, 0.314159e3等形式,在內(nèi)存中都是以規(guī)范化的指數(shù)形式存放,如圖2.3所示. 圖2.3 數(shù)字部分必須小于1,同時(shí),小數(shù)點(diǎn)后面第一個(gè)數(shù)字必須是一個(gè)非0數(shù)字,例如不能是0.0314159.因此314.159和314.159e0,31.4159e1,3
35、.14159e2, 0.314159e3在內(nèi)存中表示成0.314159×103.存儲(chǔ)單元分為兩部分,一部分用來(lái)存放數(shù)字部分,一部分用來(lái)存放指數(shù)部分.為便于理解,在圖2.3中是用十進(jìn)制表示的,實(shí)際上在存儲(chǔ)單元中是用二進(jìn)制數(shù)來(lái)表示小數(shù)部分,用2的冪次來(lái)表示指數(shù)部分的. 對(duì)于以指數(shù)形式表示的數(shù)值常量,也都作為雙精度常量處理. 2.2.3 字符常量 1. 普通的字符常量 用單撇號(hào)括起來(lái)的一個(gè)字符就是字符型常量.如a,#,%,D都是合法的字符常量,在內(nèi)存中占一個(gè)字節(jié). 注意: 字符常量只能包括一個(gè)字符,如AB 是不合法的. 字符常量區(qū)分大小寫(xiě)字母,如A和a是兩個(gè)不同的字符常量. 撇號(hào)()是定界
36、符,而不屬于字符常量的一部分.如cout<<a;輸出的是一個(gè)字母“a”,而不是3個(gè)字符“a ”. 2. 轉(zhuǎn)義字符常量 除了以上形式的字符常量外,C+還允許用一種特殊形式的字符常量,就是以 “”開(kāi)頭的字符序列.例如,n代表一個(gè)“換行”符.“cout<<n; ” 將輸出一個(gè)換行,其作用與“cout<<endl; ” 相同.這種“控制字符”,在屏幕上是不能顯示的.在程序中也無(wú)法用一個(gè)一般形式的字符表示,只能采用特殊形式來(lái)表示. 常用的以“”開(kāi)頭的特殊字符見(jiàn)書(shū)中表2.2. 3. 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 將一個(gè)字符常量存放到內(nèi)存單元時(shí),實(shí)際上并不是把該
37、字符本身放到內(nèi)存單元中去,而是將該字符相應(yīng)的ASCII代碼放到存儲(chǔ)單元中.如果字符變量c1的值為a,c2的值為b,則在變量中存放的是a的ASCII碼97,b 的ASCII碼98,如圖2.4(a)所示,實(shí)際上在內(nèi)存中是以二進(jìn)制形式存放的,如圖2.4(b)所示. 圖2.4 既然字符數(shù)據(jù)是以ASCII碼存儲(chǔ)的,它的存儲(chǔ)形式就與整數(shù)的存儲(chǔ)形式類似.這樣,在C+中字符型數(shù)據(jù)和整型數(shù)據(jù)之間就可以通用.一個(gè)字符數(shù)據(jù)可以賦給一個(gè)整型變量,反之,一個(gè)整型數(shù)據(jù)也可以賦給一個(gè)字符變量.也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對(duì)它們的ASCII碼進(jìn)行算術(shù)運(yùn)算. 例2.1 將字符賦給整型變量. #include <
38、;iostream> using namespace std; int main( ) int i,j; /i和j是整型變量 i=A; /將一個(gè)字符常量賦給整型變量i j=B; /將一個(gè)字符常量賦給整型變量j cout<<i<< <<j<<n; /輸出整型變量i和j的值,n 是換行符 return 0; 執(zhí)行時(shí)輸出 65 66 i和j被指定為整型變量.但在第5和第6行中,將字符A和B分別賦給i和j,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句: i=65;j=66; 因?yàn)锳和B的ASCII碼為65和66.在程序的第5和第6行是把65和66直接存放到i和j
39、的內(nèi)存單元中.因此輸出65和66. 可以看到:在一定條件下,字符型數(shù)據(jù)和整型數(shù)據(jù)是可以通用的.但是應(yīng)注意字符數(shù)據(jù)只占一個(gè)字節(jié),它只能存放0255范圍內(nèi)的整數(shù). 例2.2 字符數(shù)據(jù)與整數(shù)進(jìn)行算術(shù)運(yùn)算.下面程序的作用是將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母. #include <iostream> using namespace std; int main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; cout<<c1<< <<c2<<endl; return 0; 運(yùn)行結(jié)果為 A B a的ASCII碼為
40、97,而A的ASCII碼為65,b為98,B為66.從ASCII代碼表中可以看到每一個(gè)小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的ASCII代碼大32.C+符數(shù)據(jù)與數(shù)值直接進(jìn)行算術(shù)運(yùn)算,a-32得到整數(shù)65,b-32得到整數(shù)66.將65和66存放在c1,c2中,由于c1,c2是字符變量,因此用cout輸出c1,c2時(shí),得到字符A和B(A的ASCII碼為65,B的ASCII碼為66). 4. 字符串常量 用雙撇號(hào)括起來(lái)的部分就是字符串常量,如abc,Hello!,a+b,Liping都是字符串常量.字符串常量abc在內(nèi)存中占4個(gè)字節(jié)(而不是3個(gè)字節(jié)),見(jiàn)圖2.5. 圖2.5 編譯系統(tǒng)會(huì)在字符串最后自動(dòng)加一個(gè)0作
41、為字符串結(jié)束標(biāo)志.但0并不是字符串的一部分,它只作為字符串的結(jié)束標(biāo)志.如 cout<<abc<<endl; 輸出3個(gè)字符abc,而不包括0. 注意: a和a代表不同的含義,a是字符串常量,a 是字符常量.前者占兩個(gè)字節(jié),后者占1個(gè)字節(jié).請(qǐng)分析下面的程序片段: char c;/定義一個(gè)字符變量 c=a;/正確 c=a; /錯(cuò)誤,c只能容納一個(gè)字符 字符串常量要用字符數(shù)組來(lái)存放,見(jiàn)第5章. 請(qǐng)思考: 字符串常量abcn包含幾個(gè)字符?不是5個(gè)而是4個(gè)字符,其中“n”是一個(gè)轉(zhuǎn)義字符.但它在內(nèi)存中占5個(gè)字節(jié)(包括一個(gè)“0”字符) .編譯系統(tǒng)遇到“”時(shí)就會(huì)把它認(rèn)作轉(zhuǎn)義字符的標(biāo)志,把
42、它和其后的字符一起作為一個(gè)轉(zhuǎn)義字符. 如果“”后面的字符不能與“”組成一個(gè)合法的轉(zhuǎn)義字符(如c),則在編譯時(shí)顯示出錯(cuò)信息.如果希望將“”字符也作為字符串中的一個(gè)字符,則應(yīng)寫(xiě)為abcn,此時(shí)字符包括5個(gè)字符,即a,b,c,n.如果有以下輸出語(yǔ)句: cout<<abcn<<endl; 則會(huì)輸出: abc,然后換行.同理執(zhí)行 cout<<I say Thank you!n; 的輸出是: I say Thank you! 如果在一個(gè)字符串中最后一個(gè)字符為“”,則表示它是續(xù)行符,下一行的字符是該字符串的一部分,且在兩行字符串間無(wú)空格.如 cout<<We
43、must study C/本行最后的“”后面的空格和換行均不起作用 + hard!;/本行的字符緊連在上一行最后的“”前面字符之后 則輸出: We must study C+ hard! 2.2.4 符號(hào)常量 為了編程和閱讀的方便,在C+程序設(shè)計(jì)中,常用一個(gè)符號(hào)名代表一個(gè)常量,稱為符號(hào)常量,即以標(biāo)識(shí)符形式出現(xiàn)的常量. 例2.3 符號(hào)常量的使用. #define PRICE 30 /注意這不是語(yǔ)句,末尾不要加分號(hào) int main ( ) int num,total; num=10; total=num * PRICE; cout<<total=<<total<&l
44、t;endl; return 0; 程序中用預(yù)處理命令#define指定PRICE在本程序單位中代表常量30,此后凡在本程序單位中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算,程序運(yùn)行結(jié)果為 total=300 請(qǐng)注意符號(hào)常量雖然有名字,但它不是變量.它的值在其作用域(在本例中為主函數(shù))內(nèi)是不能改變的,也不能被賦值.如用賦值語(yǔ)句“PRICE=40;”給PRICE賦值是錯(cuò)誤的. 使用符號(hào)常量的好處是: (1) 含義清楚. (2) 在需要改變一個(gè)常量時(shí)能做到“一改全改”. 如 #define PRICE 35 2.3 變量 2.3.1 什么是變量 其實(shí)在前面的例子中已經(jīng)多次用到了變量.在程序
45、運(yùn)行期間其值可以改變的量稱為變量.一個(gè)變量應(yīng)該有一個(gè)名字,并在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,在該存儲(chǔ)單元中存放變量的值.請(qǐng)注意區(qū)分變量名和變量值這兩個(gè)不同的概念,見(jiàn)圖2.6. 圖2.6 2.3.2 變量名規(guī)則 先介紹標(biāo)識(shí)符的概念.和其他高級(jí)語(yǔ)言一樣,用來(lái)標(biāo)識(shí)變量.符號(hào)常量.函數(shù).數(shù)組.類型等實(shí)體名字的有效字符序列稱為標(biāo)識(shí)符(identifier).簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)名字.變量名是標(biāo)識(shí)符的一種,變量的名字必須遵循標(biāo)識(shí)符的命名規(guī)則. C+規(guī)定標(biāo)識(shí)符只能由字母.數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線.下面列出的是合法的標(biāo)識(shí)符,也是合法的變量名: sum, average, tot
46、al, day, month, Student_name, tan, BASIC, li_ling 下面是不合法的標(biāo)識(shí)符和變量名: M.D.John, $123, #33, 3G64, Ling li, C+, Zhang-ling, U.S.A. 注意,在C+中,大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符.因此,sum和SUM是兩個(gè)不同的變量名.一般地,變量名用小寫(xiě)字母表示,與人們?nèi)粘A?xí)慣一致,以增加可讀性.應(yīng)注意變量名不能與C+的關(guān)鍵字.系統(tǒng)函數(shù)名和類名相同.在國(guó)外軟件開(kāi)發(fā)工作中,常習(xí)慣在變量前面加一個(gè)字母以表示該變量的類型,如iCount表示這是一個(gè)整型變量,cSex表示這是一個(gè)字符型變量
47、. C+沒(méi)有規(guī)定標(biāo)識(shí)符的長(zhǎng)度(字符個(gè)數(shù)),但各個(gè)具體的C編譯系統(tǒng)都有自己的規(guī)定.有的系統(tǒng)取32個(gè)字符,超過(guò)的字符不被識(shí)別. 2.3.3 定義變量 在C+語(yǔ)言中,要求對(duì)所有用到的變量作強(qiáng)制定義,也就是必須“先定義,后使用”,如例2.2和例2.3那樣.定義變量的一般形式是 變量類型 變量名表列; 變量名表列指的是一個(gè)或多個(gè)變量名的序列.如 float a,b,c,d,e; 定義a,b,c,d,e為單精度型變量,注意各變量間以逗號(hào)分隔,最后是分號(hào). 可以在定義變量時(shí)指定它的初值.如 float a=83.5,b,c=64.5,d=81.2,e; /對(duì)變量a,c,d指定了初值,b和d未指定初值 C語(yǔ)言
48、要求變量的定義應(yīng)該放在所有的執(zhí)行語(yǔ)句之前,而C+則放松了限制,只要求在第一次使用該變量之前進(jìn)行定義即可.也就是說(shuō),它可以出現(xiàn)在語(yǔ)句的中間,如 int a;/定義變量a(在使用a之前定義) a=3; /執(zhí)行語(yǔ)句,對(duì)a賦值 float b; /定義變量b(在使用b之前定義) b=4.67; /執(zhí)行語(yǔ)句,對(duì)b賦值 char c; /定義變量c(在使用c之前定義) c=A; /執(zhí)行語(yǔ)句 ,對(duì)c賦值 C+要求對(duì)變量作強(qiáng)制定義的目的是: (1) 凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用得正確.例如,如果在聲明部分寫(xiě)了 int student; 而在執(zhí)行語(yǔ)句中錯(cuò)寫(xiě)成statent.如 st
49、atent=30; 在編譯時(shí)檢查出statent未經(jīng)定義,作為錯(cuò)誤處理.輸出“變量statent未經(jīng)聲明”的信息,便于用戶發(fā)現(xiàn)錯(cuò)誤,避免變量名使用時(shí)出錯(cuò). (2) 每一個(gè)變量被指定為一確定類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元.如指定a和b為int型,一般的編譯系統(tǒng)對(duì)其各分配4個(gè)字節(jié),并按整數(shù)方式存儲(chǔ)數(shù)據(jù). (3) 指定每一變量屬于一個(gè)特定的類型,這就便于在編譯時(shí),據(jù)此檢查該變量所進(jìn)行的運(yùn)算是否合法.例如,整型變量a和b,可以進(jìn)行求余運(yùn)算: a%b %是“求余”(見(jiàn)2.4 節(jié)),得到a/b的余數(shù).如果將a和b指定為實(shí)型變量,則不允許進(jìn)行“求余”運(yùn)算,在編譯時(shí)會(huì)給出有關(guān)的出錯(cuò)信息. 2.3.4
50、 為變量賦初值 允許在定義變量時(shí)對(duì)它賦予一個(gè)初值,這稱為變量初始化.初值可以是常量,也可以是一個(gè)有確定值的表達(dá)式.如 float a,b=5.78*3.5,c=2*sin(2.0); 表示定義了a,b,c為單精度浮點(diǎn)型變量,對(duì)b初始化為5.78*3, 對(duì)c初始化為2*sin(2.0),在編譯連接后,從標(biāo)準(zhǔn)函數(shù)庫(kù)得到正弦函數(shù)sin(2.0)的值,因此變量c有確定的初值.變量a未初始化. 如果對(duì)變量未賦初值,則該變量的初值是一個(gè)不可預(yù)測(cè)的值,即該存儲(chǔ)單元中當(dāng)時(shí)的內(nèi)容是不知道的.例如,若未對(duì)a和b賦值,執(zhí)行輸出語(yǔ)句 cout<<a<< <<b<< &l
51、t;<c<<endl; 輸出結(jié)果可能為 1.48544e-38 15 1.81858(各次運(yùn)行情況可能不同) 初始化不是在編譯階段完成的(只有在第4章中介紹的靜態(tài)存儲(chǔ)變量和外部變量的初始化是在編譯階段完成的),而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦予初值的,相當(dāng)于執(zhí)行一個(gè)賦值語(yǔ)句.例如, int a=3; 相當(dāng)于以下兩個(gè)語(yǔ)句 : int a; / 指定a為整型變量 a=3;/ 賦值語(yǔ)句,將3賦給a 對(duì)多個(gè)變量賦予同一初值,必須分別指定,不能寫(xiě)成 float a=b=c=4.5; 而應(yīng)寫(xiě)成 float a=4.5,b=4.5,c=4.5; 或 float a,b,c=4.5; a=b=c; 2.3.5 常變量 在定義變量時(shí),如果加上關(guān)鍵字const,則變量的值在程序運(yùn)行期間不能改變,這種變量稱為常變量(constant variable).例如, const int a=3; /用const來(lái)聲明這種變量的值不能改變,指定其值始終為3 在定義常變量時(shí)必須同時(shí)對(duì)它初始化(即指定其值),此后它的值不能再改變.常變量不能出現(xiàn)在賦值號(hào)的左邊.例如上面一行不能寫(xiě)成 const int a; a=3; /常變量不能被賦值 可以用表達(dá)式對(duì)常變量初始化,如 const int b=3+6,c=3*cos(1.5);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年湖南機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案詳解一套
- 2026年河北青年管理干部學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)含答案詳解
- 2026年湖南外國(guó)語(yǔ)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及參考答案詳解
- 四川省成都市蓉城名校聯(lián)盟2024-2025學(xué)年高二上學(xué)期期中考試政治考試政治參考答案及評(píng)分標(biāo)準(zhǔn)
- 云南稅務(wù)面試題目及答案
- 安全攻防面試題及答案
- 2025~2026學(xué)年濟(jì)南天橋區(qū)濼口實(shí)驗(yàn)學(xué)校九年級(jí)上學(xué)期12月份物理考試試卷以及答案
- 2019年7月國(guó)開(kāi)電大行管??啤侗O(jiān)督學(xué)》期末紙質(zhì)考試試題及答案
- 質(zhì)量檢驗(yàn)員培訓(xùn)
- 2025年臺(tái)州市中醫(yī)院衛(wèi)技高層次人才公開(kāi)招聘?jìng)淇碱}庫(kù)及參考答案詳解
- 醫(yī)院病案管理科年終工作總結(jié)匯報(bào)
- 多元視角下中學(xué)地理實(shí)驗(yàn)教學(xué)資源的創(chuàng)新開(kāi)發(fā)與實(shí)踐
- 戰(zhàn)傷休克早期識(shí)別與處理
- 2025中國(guó)機(jī)械工業(yè)集團(tuán)有限公司紀(jì)檢監(jiān)察中心部分崗位招聘2人筆試考試參考試題及答案解析
- 足球體育單招訓(xùn)練體系
- 2026年安全生產(chǎn)安全改進(jìn)培訓(xùn)課件
- 建筑材料學(xué)科介紹
- 2025年舞蹈理論知識(shí)考核試題題庫(kù)及答案
- 2025年通信基礎(chǔ)知識(shí)題庫(kù)附答案
- 陜西延長(zhǎng)石油集團(tuán)招聘筆試題庫(kù)(含答案詳解)
- 2026廣西融資擔(dān)保集團(tuán)校園招聘10人歷年真題匯編帶答案解析
評(píng)論
0/150
提交評(píng)論