數(shù)據(jù)處理和控制語句_第1頁
已閱讀1頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 數(shù)據(jù)處理和控制語句,基本概念 基本數(shù)據(jù)類型 變量和常量 簡(jiǎn)單的輸入和輸出運(yùn)算符和表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換,本章要點(diǎn),2.1 基本概念,本小節(jié)結(jié)合程序?qū)嵗?,介紹幾個(gè)編程的基本概念。,例2.1,#includeusing namespace std;int j=1000; //j是一個(gè)全局變量void main()

2、{  cout<<"您好!現(xiàn)在我們開始學(xué)習(xí)第二章"<<endl;  int i;      //i是一個(gè)整數(shù)變量  i=10;  const float f=10.25;    /*f是一個(gè)實(shí)型常量*/  cout<<"j是一個(gè)全局

3、變量\nj="<<j<<endl;  cout<<"i="<<i<<endl;  cout<<"i是整型變量,i的值可以改變!\n";  i=100; cout<<"i="<<i<<endl;  cout<<"f是實(shí)

4、型常量,f的值不能改變\n";  cout<<"f="<<f<<endl;},程序的運(yùn)行結(jié)果,C++字符集,大小寫英文字母:A~Z,a~z數(shù)字字符:0~9特殊字符:空格 ! # % ^ & * _ + - = ~ / \ ' " . , () [] {},字符集就是在程序設(shè)計(jì)中除字符數(shù)據(jù)外可以使用

5、的全部字符的集合。C++語言的字符集由以下字符構(gòu)成:,C++關(guān)鍵字,關(guān)鍵字是C++系統(tǒng)預(yù)定義的一些具有特別意義的單詞,例如在例2.1的程序中,int、float、const、using、void都是C++關(guān)鍵字。 下面按字母順序列出C++中的關(guān)鍵字: auto bool break case catch char class const const_cast continue defa

6、ult delete do double dynamic_cast else enum explicit extern false float for frient goto if inline int long mutable namespace new operator private protected public registe

7、r reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile

8、 while,標(biāo)識(shí)符,標(biāo)識(shí)符是編程時(shí)由程序員自己聲明的單詞,作用是給程序中的變量、函數(shù)等實(shí)體命名。 標(biāo)識(shí)符不能是C++關(guān)鍵字。例如例2.1程序中的變量名i和f都是標(biāo)識(shí)符。C++標(biāo)識(shí)符的構(gòu)成規(guī)則如下: 1、標(biāo)識(shí)符的第一個(gè)字符必須是大小寫英文字母或下劃線; 2、由大小寫字母、數(shù)字字符0~9或下劃線組成; 3、不能和C++關(guān)鍵字相同。C++標(biāo)識(shí)符區(qū)分大小寫。例如I和i是兩個(gè)不同的標(biāo)識(shí)符,標(biāo)識(shí)符舉例,i, ca

9、r1, dog, _123boy等都是合法的標(biāo)識(shí)符 。1girl, No.1是不合法的標(biāo)識(shí)符,程序注釋,程序注釋是程序中出現(xiàn)的解釋性的文字字符串,不是程序的可執(zhí)行語句;其作用是對(duì)源程序進(jìn)行注解和說明,提高程序的可閱讀性,以便于程序的修改和維護(hù)。 C++程序中,注釋是以符號(hào)“//”開頭的一行字符串,或者是一有符號(hào)“/*”和“*/”擴(kuò)住的一行或多行字符串 。注釋可以跟在一條語句之后,也可以單獨(dú)占據(jù)一行或多行 。 程序編譯時(shí),注釋

10、文字不會(huì)被編譯器創(chuàng)建到目標(biāo)程序之中,所以注釋的多少不會(huì)影響程序的大小 。例2.1中的“//j是一個(gè)全局變量”“//i是一個(gè)整數(shù)變量”和“/*f是一個(gè)實(shí)型常量*/”都是程序注釋,2.2 基本數(shù)據(jù)類型,作為一種功能強(qiáng)大的編程語言,C++提供了豐富的數(shù)據(jù)類型供編程者使用 。C++基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符型和布爾型 。C++語言本身并沒有規(guī)定某種類型數(shù)據(jù)的長(zhǎng)度(所占字節(jié)的數(shù)目),同一種數(shù)據(jù)類型在不同的編譯系統(tǒng)中的長(zhǎng)度可能不同。

11、本章將要介紹的基本數(shù)據(jù)類型的字節(jié)長(zhǎng)度都是基于VC++6.0編譯系統(tǒng)的(32位系統(tǒng))。,整數(shù)類型,C++的整數(shù)類型又包括短整型(short int)、普通整型(int)、長(zhǎng)整型(long int)。 短整型又分為有符號(hào)短整型和無符號(hào)短整型,分別用關(guān)鍵字short int和unsigned short int表示,int可以省略。短整型數(shù)據(jù)占2字節(jié)存儲(chǔ)空間 。普通整型又分為有符號(hào)和無符號(hào)兩種,分別用關(guān)鍵字int和unsigned int

12、表示。普通整型數(shù)據(jù)占4字節(jié)存儲(chǔ)空間 。 長(zhǎng)整型又分為有符號(hào)長(zhǎng)整型和無符號(hào)長(zhǎng)整型,分別用關(guān)鍵字long int和unsigned long int表示,int可以省略。和int類型相同,長(zhǎng)整型數(shù)據(jù)也占4字節(jié)存儲(chǔ)空間 。,浮點(diǎn)類型,實(shí)數(shù)在計(jì)算機(jī)中用浮點(diǎn)型表示 。 C++的浮點(diǎn)類型包括普通浮點(diǎn)型和雙精度浮點(diǎn)型 。普通浮點(diǎn)型用關(guān)鍵字float表示,占4字節(jié)存儲(chǔ)空間 。 雙精度浮點(diǎn)型用關(guān)鍵字double表示,占8字節(jié)存儲(chǔ)空間 。,字符類型

13、,字符型用關(guān)鍵字char表示,占1字節(jié)存儲(chǔ)空間 。 字符在計(jì)算機(jī)中以編碼形式存儲(chǔ),編碼有多種類型,C++系統(tǒng)采用ASCLL碼存儲(chǔ)字符數(shù)據(jù) 。ASCLL碼用1個(gè)字節(jié)中的低7位作為字符數(shù)據(jù)的編碼 ,最高位恒為0 。 例如字符‘A’的ASCLL碼為“01000001”,其對(duì)應(yīng)的10進(jìn)制整數(shù)值為65;字符‘a(chǎn)’的ASCLL碼值為97 。可以看到,char型數(shù)據(jù)本質(zhì)上就是整數(shù)類型,通常把char類型作為單字節(jié)整數(shù)類型使用 。char型數(shù)

14、據(jù)作為整數(shù)使用時(shí)叫做有符號(hào)單字節(jié)整數(shù),最高位為“0”時(shí),表示正數(shù);最高位為“1”時(shí),表示負(fù)數(shù)。無符號(hào)字符類型用關(guān)鍵字unsigned char表示,只能表示單字節(jié)正整數(shù)。,布爾類型,布爾型數(shù)據(jù)用來進(jìn)行邏輯判斷,其取值只能是true(真)或false(假) 。 占1字節(jié)存儲(chǔ)空間 。,各種數(shù)據(jù)類型的字節(jié)數(shù)和取值范圍下表所示,2.3 變量和常量,變量,變量是程序中存儲(chǔ)數(shù)據(jù)的單元,占有一定長(zhǎng)度的存儲(chǔ)器空間,在程序執(zhí)行過程中其值可以改變。變

15、量的命名規(guī)則和標(biāo)識(shí)符相同。變量要先定義、后使用。變量定義語句的格式如下所示: [存儲(chǔ)類型] 數(shù)據(jù)類型 變量名1, 變量名2,…,變量名n ; int i; //這條語句定義了一個(gè)整型變量i。使用變量前要給變量賦初值。如例2.1中的語句: i=10; //這條語句把數(shù)值10存放到屬于變量i的存儲(chǔ)空間中,即把數(shù)值 10賦予變量i定義變量的同時(shí)給變量賦值叫做變量初始化。例如: int

16、 i=10;,變量的存儲(chǔ)類型,變量的值存放在存儲(chǔ)器中。根據(jù)存儲(chǔ)地點(diǎn)的不同,變量又分為不同的存儲(chǔ)類型 。 C++變量的存儲(chǔ)類型分自動(dòng)型和持續(xù)型兩大類 。,自動(dòng)型變量,自動(dòng)型變量的特點(diǎn)是:變量的存儲(chǔ)空間在程序運(yùn)行時(shí)被自動(dòng)分配。當(dāng)包含該變量的函數(shù)開始運(yùn)行時(shí),系統(tǒng)自動(dòng)為該變量分配存儲(chǔ)空間;當(dāng)包含該變量的函數(shù)模塊運(yùn)行結(jié)束時(shí),其存儲(chǔ)空間被系統(tǒng)回收,該變量隨之被自動(dòng)銷毀。自動(dòng)型變量包括以下兩種 : 1、auto型:這種類型的變量被存放在

17、稱為“棧”的內(nèi)存空間中。定義這種變量時(shí),關(guān)鍵字auto可以省略;程序中在函數(shù)或模塊內(nèi)部聲明的變量,如果不做其他聲明,都屬于這種存儲(chǔ)類型的變量。 2、register型:稱為寄存器型變量。這種類型的變量被直接存放在計(jì)算機(jī)中央處理器(CPU)的寄存器中,特點(diǎn)是變量的訪問速度較快。定義寄存器變量時(shí),要使用關(guān)鍵字register 。例如: register int i;,持續(xù)性變量,持續(xù)性變量的特點(diǎn)是:變量從被

18、定義時(shí)開始,系統(tǒng)為其分配存儲(chǔ)空間;在程序的整個(gè)運(yùn)行過程中一直存在,直到程序運(yùn)行結(jié)束才被銷毀。持續(xù)型變量包括以下兩種: 1、全局變量:是程序中在任何函數(shù)之外聲明的變量。存放在程序的靜態(tài)存儲(chǔ)區(qū)之中。程序開始執(zhí)行時(shí),系統(tǒng)給全局變量分配存儲(chǔ)空間,程序執(zhí)行完畢釋放存儲(chǔ)空間。在程序執(zhí)行期間,全局變量占據(jù)固定的存儲(chǔ)單元,而不是由系統(tǒng)動(dòng)態(tài)分配。如例2.1程序中的變量j就是一個(gè)全局變量。   2、static型:稱為靜態(tài)變量。存放在程序

19、的靜態(tài)存儲(chǔ)區(qū)中。程序執(zhí)行時(shí),從定義靜態(tài)變量開始,系統(tǒng)為其分配存儲(chǔ)空間;在程序的整個(gè)運(yùn)行過程中一直存在,直到程序運(yùn)行結(jié)束才被銷毀。定義靜態(tài)變量時(shí)要使用關(guān)鍵字static。如下語句所示:   static int i;,常量,常量就是在程序的執(zhí)行過程中,其值保持不變的量 。 程序中的常量又分為數(shù)值常量和符號(hào)常量 。,數(shù)值常量,數(shù)值常量就是直接出現(xiàn)在程序中的各種不同數(shù)據(jù)類型的數(shù)值字面量 。 數(shù)值常量包括整型常量、實(shí)型常量、字符常量、字符

20、串常量和布爾常量 。,(1) 整型常量,整型常量的包括十進(jìn)制整數(shù)、八進(jìn)制整數(shù)和十六進(jìn)制整數(shù) 。 十進(jìn)制整型常量的表示形式與普通的十進(jìn)制整數(shù)相同。如10、100、10.25、25.3等。八進(jìn)制整型常量的表示形式是以數(shù)字0開頭的八進(jìn)制數(shù)。如010、023、075等。十六進(jìn)制整型常量的表示為一個(gè)以數(shù)字字符0和字母字符x開頭的十六進(jìn)制數(shù)。如0x10、0xA2等。整型常量的數(shù)據(jù)類型默認(rèn)為int型,加字母后綴L(或l)表示長(zhǎng)整型;加字母后綴

21、U(或u)表示無符號(hào)整型。,(2) 浮點(diǎn)常量,浮點(diǎn)常量以兩種形式出現(xiàn)在程序中:一般形式的浮點(diǎn)常量和指數(shù)形式的浮點(diǎn)常量。 例如10.25、25.3、1000.00都是普通形式的浮點(diǎn)常量。1025E-2、0.253E+2、-5.76E+1就是指數(shù)形式的浮點(diǎn)常量,分別表示實(shí)數(shù)10.25、25.3和-57.6 。浮點(diǎn)常量默認(rèn)的數(shù)據(jù)類型為double型,可以加字母后綴f或F將其轉(zhuǎn)換為float型。例如10.25f、1000.00F 。,(3)

22、 字符常量和字符串常量,字符常量是出現(xiàn)在程序中的以單引號(hào)擴(kuò)住的單個(gè)字符。如'a'、'G' 等 。 字符串常量是出現(xiàn)在程序中的以雙引號(hào)擴(kuò)住的,由一個(gè)或多個(gè)字符組成的字符序列。如例2.1程序中的"您好!現(xiàn)在我們開始學(xué)習(xí)第二章"、"i=" 等。有些字符不能直接從鍵盤輸入或無法顯示,例如表示“回車”的字符和表示“換行”的字符。那么,在程序中如何表示這些字符呢?C++提供

23、了一種特殊的表示方法----轉(zhuǎn)義序列?!?例如:cout<<“j是一個(gè)全局變量\nj=”<<j<<endl;  其中的‘\n’就是一個(gè)轉(zhuǎn)義字符,叫做換行符。功能是完成輸出操作中  的換行 下表(表2.2)列出了常用的轉(zhuǎn)義字符序列的編碼、ASCLL碼值和功能,C++轉(zhuǎn)義字符序列,(4) 布爾常量,布爾常量就是程序中出現(xiàn)的false和true 。,符號(hào)常量,有一些常量在程序中頻繁出現(xiàn),可以用一個(gè)固

24、定的標(biāo)識(shí)符來命名這些常量,稱為符號(hào)常量。 例如:用標(biāo)識(shí)符PI來代表圓周率3.14159。這樣做既可以使該常量的含義清晰;也有利于編程者更新該常量代表的值。如果編程者想將圓周率的值修改為3.1415,則只需修改符號(hào)常量PI的定義,而不需要逐個(gè)修改出現(xiàn)在程序中的每個(gè)圓周率的值。 C++語言提供了定義符號(hào)常量的新的方法---使用關(guān)鍵字const。語法形式如下:  const 數(shù)據(jù)類型 符號(hào)常量名 = 常量值; 例如:  cons

25、t double PI = 3.14159;,2.4 簡(jiǎn)單的輸入和輸出,C++中采用面向?qū)ο蟮臋C(jī)制來實(shí)現(xiàn)輸入和輸出。為了平臺(tái)獨(dú)立性,C++語言中也沒有實(shí)現(xiàn)輸入和輸出功能的語句,而是使用標(biāo)準(zhǔn)輸入/輸出流類庫來實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。標(biāo)準(zhǔn)輸入/輸出流類庫中定義了許多輸入/輸出流類和預(yù)定義的輸入/輸出流對(duì)象,要使用它們就必須包含定義它們的頭文件。本節(jié)介紹用于控制臺(tái)輸入和輸出的流對(duì)象cout和cin 。,標(biāo)準(zhǔn)輸出流對(duì)象cout,cout是流類

26、庫中預(yù)定義的對(duì)象,它是標(biāo)準(zhǔn)輸出流類ostream的對(duì)象,代表標(biāo)準(zhǔn)輸出設(shè)備---顯示器。例如:   cout   或者   #include   using namespace std;,標(biāo)準(zhǔn)輸入流對(duì)象cin,cin也是流類庫中預(yù)定義的對(duì)象,它是標(biāo)準(zhǔn)輸入流類istream的對(duì)象,代表標(biāo)準(zhǔn)輸入設(shè)備---鍵盤。例如:   cin>>i>>j; //從鍵盤輸入變量i和j的值 語句中的“>>”稱

27、為提取運(yùn)算符,功能是從輸入流中提取數(shù)據(jù),賦值給程序中的變量 。cin對(duì)象也是在頭文件iostream和iostream.h中定義的。,2.5 C++運(yùn)算符和表達(dá)式,作為一種功能強(qiáng)大的程序設(shè)計(jì)語言,C++提供了豐富的運(yùn)算符。包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和其他幾類運(yùn)算符。由運(yùn)算符連接而成的運(yùn)算式稱為表達(dá)式 。運(yùn)算符具有優(yōu)先級(jí)和結(jié)合性。當(dāng)多個(gè)運(yùn)算符出現(xiàn)在同一個(gè)表達(dá)式中時(shí),運(yùn)算的先后順序由運(yùn)算符的優(yōu)先級(jí)決定。當(dāng)優(yōu)先級(jí)相

28、同的運(yùn)算符在表達(dá)式中連續(xù)出現(xiàn)時(shí),若運(yùn)算順序是先左后右,則其結(jié)合性是自左向右;若運(yùn)算順序是先右后左,則其結(jié)合性是自右向左。根據(jù)所需操作數(shù)的個(gè)數(shù),運(yùn)算符又可以分成一元運(yùn)算符和二元運(yùn)算符 。,賦值運(yùn)算符和賦值表達(dá)式,賦值運(yùn)算符 “=”使用在賦值表達(dá)式中,賦值表達(dá)式的一般形式如下: 變量 = 表達(dá)式 =(賦值運(yùn)算符)的功能是把其右邊的表達(dá)式的值賦給其左邊的變量 。,算術(shù)運(yùn)算符和算術(shù)表達(dá)式,常見的C++的算術(shù)運(yùn)算符包括:+(加)、-(減

29、)、*(乘)、/(除)、%(取模)運(yùn)算符。*(乘)、/(除)和%(取模)運(yùn)算符的優(yōu)先級(jí)相同,結(jié)合性為自左向右。 +(加)、-(減)運(yùn)算符的優(yōu)先級(jí)相同,結(jié)合性為自左向右。 *、/和%運(yùn)算符的優(yōu)先級(jí)高于+、-運(yùn)算符。除了以上5個(gè)運(yùn)算符,C++算術(shù)運(yùn)算符還包括算術(shù)賦值運(yùn)算符和自加/自減運(yùn)算符。,算術(shù)賦值運(yùn)算符,算術(shù)賦值運(yùn)算符包括:+=、-=、*=、/=、%=。它們都是二元運(yùn)算符,優(yōu)先級(jí)低于+、-運(yùn)算符;結(jié)合性為自右向左。表達(dá)式a+=

30、b等價(jià)于表達(dá)式a=a+b,即把a(bǔ)+b的值賦值給變量a,整個(gè)表達(dá)式的值為賦值后變量a的值。其他4個(gè)算術(shù)賦值運(yùn)算符的使用和+=類似。,自加和自減運(yùn)算符,自加和自減運(yùn)算符 :“++”和“--”它們是一元運(yùn)算符。功能是將操作數(shù)的值自加1。每一個(gè)又分為前置和后置兩種,前置是指運(yùn)算符放在操作數(shù)前面,后置則相反。例如若整型變量i的值為10,則表達(dá)式++i或i++都將使i的值變成11。自加和自減運(yùn)算符的前置和后置是有區(qū)別的,以++運(yùn)算符為例,若

31、整型變量i的值為10,則前置自加表達(dá)式++i的值是11,而后置表達(dá)式i++的值為10。下例說明了前置++運(yùn)算符和后置++運(yùn)算符在使用時(shí)的區(qū)別:,例2.2 前置++運(yùn)算符和后置++運(yùn)算符,#includeusing namespace std;void main(){int i,j,k,s=10;k=10;i=++k+s;k=10;j=k+++s;cout<<"i="<&

32、lt;i<<endl;cout<<"j="<<j<<endl;},程序的運(yùn)行結(jié)果,關(guān)系運(yùn)算符和關(guān)系表達(dá)式,關(guān)系運(yùn)算符是二元運(yùn)算符,用來比較兩個(gè)值的大小。C++關(guān)系運(yùn)算符的包括==(等于)、!=(不等于)、(大于)、=(大于或等于)幾種。由關(guān)系運(yùn)算符連接操作數(shù)構(gòu)成的表達(dá)式叫關(guān)系表達(dá)式。關(guān)系表達(dá)式的值為bool類型 。例如:關(guān)系表達(dá)式 i>=0用來判斷變量

33、i的值是否大于或等于0,若是則表達(dá)式的值為 true,否則表達(dá)式的值為false。,邏輯運(yùn)算符和邏輯表達(dá)式,邏輯運(yùn)算符用于判斷復(fù)雜的邏輯關(guān)系。C++的邏輯運(yùn)算符包括!(邏輯非)、&&、(邏輯與)、||(邏輯或)。邏輯運(yùn)算符的操作數(shù)為關(guān)系表達(dá)式,邏輯運(yùn)算符連接關(guān)系表達(dá)式構(gòu)成邏輯表達(dá)式。邏輯表達(dá)式的值也是bool類型。邏輯運(yùn)算符 ! 是一元運(yùn)算符,表示邏輯非。邏輯運(yùn)算符&&和||是二元運(yùn)算符,分別表示邏

34、輯與和邏輯或。若A和B是兩個(gè)關(guān)系表達(dá)式,則邏輯表達(dá)式!A、A&&B、A||B的取值如表2.3所示 :,表2.3 三種邏輯運(yùn)算的真值表,位運(yùn)算符,任何信息在計(jì)算機(jī)內(nèi)部都是以二進(jìn)制形式存儲(chǔ)的。C++提供的位運(yùn)算符可以對(duì)整型數(shù)據(jù)的二進(jìn)制位進(jìn)行操作。C++位運(yùn)算符的功能和用法如表2.4所示 :,表2.4 C++位運(yùn)算符,表中的opr、opr1、opr2代表整型操作數(shù),1、按位取反運(yùn)算符 ~,運(yùn)算符~是一元運(yùn)算符,功能是將操

35、作數(shù)按位取反。即原來是0的位,取反后變?yōu)?;原來是1的位,取反后變?yōu)?。例如,單字節(jié)整數(shù)38的二進(jìn)制數(shù)為00100110,則表達(dá)式~38的二進(jìn)制值為11011001 。,2、按位與運(yùn)算符 &,運(yùn)算符&是一個(gè)二元運(yùn)算符,功能是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一個(gè)二進(jìn)制位進(jìn)行邏輯與操作。例如,單字節(jié)整數(shù)38和26的二進(jìn)制數(shù)分別為00100110和00011010,則表達(dá)式38&26的二進(jìn)制值為00000010??梢钥吹?,當(dāng)兩

36、個(gè)操作數(shù)的對(duì)應(yīng)位都為1時(shí),按位與結(jié)果的對(duì)應(yīng)位為1,否則,結(jié)果的對(duì)應(yīng)位為0 。,3、按位或運(yùn)算符 |,運(yùn)算符|是一個(gè)二元運(yùn)算符,功能是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一個(gè)二進(jìn)制位進(jìn)行邏輯或操作。例如,單字節(jié)整數(shù)38和26的二進(jìn)制數(shù)分別為00100110和00011010,則表達(dá)式38|26的二進(jìn)制值為00111110??梢钥吹?,只有當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位都為0時(shí),按位或結(jié)果的對(duì)應(yīng)位才為0,否則,結(jié)果的對(duì)應(yīng)位都為1。,4、按位異或運(yùn)算符 ^,運(yùn)算符^是

37、一個(gè)二元運(yùn)算符,功能是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一個(gè)二進(jìn)制位進(jìn)行邏輯異或操作。例如,單字節(jié)整數(shù)38和26的二進(jìn)制數(shù)分別為00100110和00011010,則表達(dá)式38^26的二進(jìn)制值為001111100??梢钥吹?,當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位不同時(shí)(不都是1或不都是0),結(jié)果的對(duì)應(yīng)位為1;當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位相同時(shí)(都是1或都是0),結(jié)果的對(duì)應(yīng)位為0。,5、左移位運(yùn)算符 <<,運(yùn)算符<<是一個(gè)二元運(yùn)算符,若opr1和opr

38、2是兩個(gè)整型數(shù)據(jù),則表達(dá)式opr1<<opr2的功能是把整數(shù)opr1向左移動(dòng)opr2位。左移后,低位部分補(bǔ)0,而移出的高位部分被舍棄。例如,表達(dá)式2<<3使2的二進(jìn)制數(shù)00000010向左移動(dòng)3位變成00010000,所以表達(dá)式的值為16,6、右移位運(yùn)算符 >>,運(yùn)算符>>是一個(gè)二元運(yùn)算符,若opr1和opr2是兩個(gè)整型數(shù)據(jù),則表達(dá)式opr1>>opr2的功能是把整數(shù)opr1

39、向右移動(dòng)opr2位。右移后,右邊移出的低位部分被舍棄。如果opr1是無符號(hào)整數(shù),則左邊移入的高位部分補(bǔ)0;如果opr1是帶符號(hào)整數(shù),則左邊移入的高位部分補(bǔ)符號(hào)位或補(bǔ)0,VC++6.0是采用補(bǔ)符號(hào)位的方法。例如,表達(dá)式8>>3使8的二進(jìn)制數(shù)00001000向右移動(dòng)3位變成00000001,所以表達(dá)式的值為1,例2.3 從鍵盤輸入一個(gè)無符號(hào)短整數(shù),并按二進(jìn)制形式輸出,#includeusing namespace std;

40、void main(){  unsigned short i; cout>i;  for(int j=15;j>=0;j--)  {   if(i&(1<<j))    cout<<"1";   elsecout<<"0";  }  cout<<endl;},逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式,C++中

41、,逗號(hào)不光可以作為分隔符用于變量定義語句和函數(shù)的參數(shù)列表中,還可以作為運(yùn)算符把多個(gè)表達(dá)式連接成一個(gè)逗號(hào)表達(dá)式。逗號(hào)表達(dá)式形式如下: 表達(dá)式1 ,表達(dá)式2 ,… ,表達(dá)式n 逗號(hào)表達(dá)式的值為表達(dá)式n的值。例如 j=(i=2+3,i*4)中小括號(hào)中的部分就是一個(gè)逗號(hào)表達(dá)式,j的值為20。,條件運(yùn)算符和條件表達(dá)式,條件運(yùn)算符 ? 是C++中唯一一個(gè)三元運(yùn)算符,它可以完成簡(jiǎn)單的判斷功能,條件表達(dá)式的形式如下 : 表達(dá)式1 ? 表達(dá)式2 :

42、 表達(dá)式3 若表達(dá)式1的值非零或?yàn)閠rue,則整個(gè)條件表達(dá)式的值為表達(dá)式2的值;若表達(dá)式1的值為零或?yàn)閒alse,則整個(gè)條件表達(dá)式的值為表達(dá)式3的值。例如:  i=j>0 ? 10 : 0;  若j=5,則語句執(zhí)行后i的值為10,sizeof運(yùn)算符,sizeof運(yùn)算符的功能是計(jì)算一個(gè)對(duì)象或某種類型占存儲(chǔ)器的字節(jié)個(gè)數(shù)。例如:sizeof(int)的值為4;若i是一個(gè)int型變量,則sizeof(i)的值也為4,其他運(yùn)算符,上

43、述運(yùn)算符中,有的運(yùn)算符根據(jù)使用地點(diǎn)的不同,還會(huì)具有其他的含義和用法,例如*和&運(yùn)算符和指針一起使用時(shí),分別是解引用和取地址運(yùn)算符。除了上述運(yùn)算符外,C++還包含一些非常常用的運(yùn)算符,包括new運(yùn)算符、delete運(yùn)算符、::運(yùn)算符、->運(yùn)算符、static_cast運(yùn)算符、dynamic_cast運(yùn)算符等。這些運(yùn)算符將在以后相應(yīng)的章節(jié)介紹。,表2.5 C++運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,2.6 數(shù)據(jù)類型轉(zhuǎn)換,在表達(dá)式中,如

44、果參與運(yùn)算的操作數(shù)的類型不同,則應(yīng)先進(jìn)行類型轉(zhuǎn)換,使操作數(shù)的類型一致,然后再進(jìn)行運(yùn)算。數(shù)據(jù)類型轉(zhuǎn)換分隱式類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換兩種形式 。,1、隱式類型轉(zhuǎn)換,不需要程序員指定,由C++編譯器在編譯程序時(shí)自動(dòng)進(jìn)行。隱式類型轉(zhuǎn)換的轉(zhuǎn)換規(guī)則是:把低精度的數(shù)據(jù)類型轉(zhuǎn)換為高精度的數(shù)據(jù)類型。各種類型的精度高低順序如表2.6所示,例如下面的幾條語句:int i=10;long j=20;double k;k=i*j;,編譯器首先把變量i

45、轉(zhuǎn)換成long型,再把i*j運(yùn)算結(jié)果轉(zhuǎn)換成double類型,兩次轉(zhuǎn)換都是隱式進(jìn)行的,2、強(qiáng)制類型轉(zhuǎn)換,程序員利用類型說明符和小括號(hào),在程序中顯式地把某個(gè)操作數(shù)或表達(dá)式的值從一種類型轉(zhuǎn)換為另一種類型 。語法形式如下 :  (類型說明符)操作數(shù)或表達(dá)式  或  類型說明符(操作數(shù)或表達(dá)式) 如果希望把高精度的數(shù)據(jù)轉(zhuǎn)換成低精度的數(shù)據(jù),則必須采用強(qiáng)制類型轉(zhuǎn)換。例如:  int s,i=10;  long j=20,k=30; 

46、 s=i+(int)(j*k);,C++強(qiáng)制類型轉(zhuǎn)換操作符,使用小括號(hào)進(jìn)行強(qiáng)制類型轉(zhuǎn)換是C++從C語言繼承的語法格式。C++中引入了4個(gè)強(qiáng)制類型轉(zhuǎn)換操作符: static_cast、dynamic_cast、const_cast、reinterpret_cast static_cast操作符可用于將數(shù)據(jù)從一種數(shù)值類型轉(zhuǎn)換為另一種數(shù)值類型。語法格式 : static_cast(數(shù)值表達(dá)式)   例如:  double d=12

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論