




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-2-221C+高級(jí)語(yǔ)言程序設(shè)計(jì)高級(jí)語(yǔ)言程序設(shè)計(jì)第第2 2章章 基本數(shù)據(jù)類型與表達(dá)式基本數(shù)據(jù)類型與表達(dá)式北京郵電大學(xué)信息與通信工程學(xué)院北京郵電大學(xué)信息與通信工程學(xué)院北京郵電大學(xué)信息與通信工程學(xué)院2022-2-222程序中最基本的要素是數(shù)據(jù)類型,根據(jù)數(shù)據(jù)類型可以為變量或常量分配內(nèi)存空間,將變量、常量和運(yùn)算符結(jié)合在一起組成表達(dá)式,進(jìn)行復(fù)雜的運(yùn)算和處理。北京郵電大學(xué)信息與通信工程學(xué)院2022-2-22-3-第第2 2章章 基本數(shù)據(jù)類型與表達(dá)式基本數(shù)據(jù)類型與表達(dá)式2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型2.3 2.3 變量和常量變量和常量2.4
2、2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式2.5 2.5 基本輸入輸出基本輸入輸出2.6 2.6 使用使用stringstring類型處理字符串類型處理字符串北京郵電大學(xué)信息與通信工程學(xué)院2022-2-22-4-2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符C+字符集英文字母:AZ,az數(shù)字字符:09特殊字符: + - * / % = ! # & | _ “ ; . , ( ) 空格2022-2-22-5-北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符C+關(guān)鍵字什么是關(guān)鍵字? 預(yù)先
3、定義好的標(biāo)識(shí)符,C+編譯器對(duì)其進(jìn)行特殊處理。如何識(shí)別關(guān)鍵字? 使用VC2005的編輯環(huán)境時(shí),缺省是藍(lán)色的字符即為關(guān)鍵字。2022-2-22-6-北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符標(biāo)識(shí)符 標(biāo)識(shí)符是程序員聲明的單詞,它命名程序正文中的一些實(shí)體,如函數(shù)名、變量名、類名、對(duì)象名等。C+標(biāo)識(shí)符的構(gòu)成規(guī)則如下: 2022-2-22-7- 1、不能是C+的關(guān)鍵字; 2、第一個(gè)字符必須是大寫、小寫字母或下劃線; 3、不包含空格和“+、-、;”等特殊字符; 4、為方便輸入,長(zhǎng)度一般不超過(guò)31個(gè)字符。北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)
4、和標(biāo)識(shí)符 例如: 合法的標(biāo)識(shí)符: apple、_Student、_123、No1、max_num 不合法的標(biāo)識(shí)符: 51job、max num、-abc 2022-2-22-8-注意: C+的標(biāo)識(shí)符是大小寫敏感的,即abcABC。北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符分隔符 分隔符用于分隔程序中的正文,在C+中使用下列字符作為分隔符: ( ) ,:; 這些分隔符不表示實(shí)際的操作,僅用于構(gòu)造程序。比如“;”用來(lái)作為一句完整語(yǔ)句的結(jié)束。2022-2-22-9-北京郵電大學(xué)信息與通信工程學(xué)院2.1 2.1 詞法記號(hào)和標(biāo)識(shí)符詞法記號(hào)和標(biāo)識(shí)符空白 在C+語(yǔ)句中經(jīng)常
5、出現(xiàn)空白(制表符、空格、空行)等,通常都忽略不計(jì)。2022-2-22-10-北京郵電大學(xué)信息與通信工程學(xué)院2.2.2 2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型北京郵電大學(xué)信息與通信工程學(xué)院2022-2-22-11-2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型什么是數(shù)據(jù)類型? 數(shù)據(jù)是程序處理的對(duì)象,數(shù)據(jù)根據(jù)其本身的特點(diǎn)進(jìn)行分類,從而形成不同的數(shù)據(jù)類型。 例如:數(shù)學(xué)中有自然數(shù)、整數(shù)、實(shí)數(shù) 不同類型的數(shù)據(jù)有不同的表示和處理方法,具有不同運(yùn)算規(guī)則2022-2-22-12-北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型 整型:int 字符型:char 、wchar_t 實(shí)型:floa
6、t、double 邏輯型:bool2022-2-22-13-北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型修飾符 在C+中描述為了更加準(zhǔn)確的描述數(shù)據(jù)類型,提供了4個(gè)關(guān)鍵字用來(lái)修飾基本的數(shù)據(jù)類型: 1、長(zhǎng)型 long 2、短型 short 3、有符號(hào) signed 4、無(wú)符號(hào) unsigned2022-2-22-14-北京郵電大學(xué)信息與通信工程學(xué)院1、short:僅用來(lái)修飾int,稱為短整型,占2字節(jié)內(nèi)存,也可直接簡(jiǎn)寫為short;2、long: 僅修飾int和double,在不同的編譯環(huán)境中使用long修飾的double類型數(shù)據(jù)所占內(nèi)存不同。 3、unsigned: 用
7、來(lái)修飾char、short和int,表示該數(shù)據(jù)類型為無(wú)符號(hào)數(shù)。 4、signed: 用來(lái)修飾char、short和int,表示該數(shù)據(jù)類型為有符號(hào)數(shù),為缺省設(shè)置。2022-2-22-15-北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型數(shù)據(jù)類型與內(nèi)存空間 不同的數(shù)據(jù)類型,加上不同的修飾符就具有了不同的特點(diǎn),在內(nèi)存中占用的空間也不同,因而其所能表示的數(shù)值范圍也不盡相同。 內(nèi)存單元的單位是字節(jié),因此用來(lái)表示數(shù)據(jù)類型的長(zhǎng)度的單位也是字節(jié)。 2022-2-22-16-北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型數(shù)據(jù)類型與內(nèi)存空間特定數(shù)據(jù)類型在內(nèi)存中占用的內(nèi)
8、存因機(jī)器的不同而不同 整型int的長(zhǎng)度等于機(jī)器的字長(zhǎng): 16位機(jī):int=2字節(jié); 32位機(jī):int=4字節(jié)。 2022-2-22-17-北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型數(shù)據(jù)類型與內(nèi)存空間如果需要編寫可移植性好的程序,應(yīng)將整型聲明為short或long。因?yàn)閟hort和long表示的數(shù)據(jù)長(zhǎng)度是固定的,任何支持標(biāo)準(zhǔn)C+的編譯器都是如此。-18-2022-2-22北京郵電大學(xué)信息與通信工程學(xué)院2.2 2.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型例2-1 打印各種數(shù)據(jù)類型的長(zhǎng)度 編寫一個(gè)程序,輸出基本數(shù)據(jù)類型char, int, float, double,bool的長(zhǎng)度。
9、提示: 使用sizeof(數(shù)據(jù)類型) 能夠獲取不同數(shù)據(jù)類型的長(zhǎng)度。-19-2022-2-22北京郵電大學(xué)信息與通信工程學(xué)院/例例2-1 2-1 顯示各種數(shù)據(jù)類型的長(zhǎng)度顯示各種數(shù)據(jù)類型的長(zhǎng)度#include #include using namespace std;using namespace std;void main()void main() coutchar coutchar :sizeof(char)sizeof(char)字節(jié)字節(jié)n;n; coutint coutint :sizeof(int)sizeof(int)字節(jié)字節(jié)n;n; coutfloat coutfloat :size
10、of(float)sizeof(float)字節(jié)字節(jié)n;n; coutdouble coutdouble:sizeof(double)sizeof(double)字節(jié)字節(jié)n;n; coutbool coutbool :sizeof(bool)sizeof(bool)字節(jié)字節(jié)n;n; -20-在32位機(jī)上運(yùn)行結(jié)果 char :1字節(jié) int : 4字節(jié) float : 4字節(jié) double : 8字節(jié) bool :1字節(jié)2022-2-22北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量和常量變量和常量-21-北京郵電大學(xué)信息與通信工程學(xué)院2022-2-222.3 2.3 變量和常量變量和常量概
11、述 程序所處理的數(shù)據(jù)不僅分為不同的數(shù)據(jù)類型,而且每種類型的數(shù)據(jù)還分為變量和常量。程序在運(yùn)行中就是通過(guò)這些變量和常量來(lái)操作數(shù)據(jù)的。 2022-2-22-22-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量什么是變量? 在C+中,變量是存儲(chǔ)信息的地方。變量的實(shí)質(zhì)是內(nèi)存中的一個(gè)地址空間,在這個(gè)地址空間中可以進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取。 2022-2-22-23-北京郵電大學(xué)信息與通信工程學(xué)院定義變量的格式數(shù)據(jù)類型 變量名1,變量名2,變量名n;例如:定義各種類型的變量 int num; float f; char ch; short s; double area, length;2022-2-22
12、-24-2.3 2.3 變量變量北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量定義變量的實(shí)質(zhì)例如:int num;系統(tǒng)根據(jù)所指定的數(shù)據(jù)類型int,從地址xxxxxxxH開始,為變量num分配4個(gè)字節(jié)單元。變量num的取值范圍為2312311。2022-2-22-25-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量定義變量的實(shí)質(zhì)例如:int num;編程時(shí),可以直接使用變量名num對(duì)存儲(chǔ)在該內(nèi)存空間的數(shù)據(jù),也就是變量值進(jìn)行存取。變量名和地址xxxxxxxH之間的對(duì)應(yīng)關(guān)系由系統(tǒng)來(lái)管理。2022-2-22-26-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量幾點(diǎn)說(shuō)明 在創(chuàng)建或
13、定義變量時(shí),需要指明該變量的數(shù)據(jù)類型和名稱。 數(shù)據(jù)類型:決定變量的存儲(chǔ)方式和可以進(jìn)行的操作; 變量名稱:用來(lái)區(qū)分不同的變量。 2022-2-22-27-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量幾點(diǎn)說(shuō)明在C+程序中使用變量,必須“先定義或聲明,后使用”,而且只能定義一次。 變量定義語(yǔ)句的位置,C+中沒有要求,放在第一次使用該變量之前的任何位置均可以。2022-2-22-28-建議:把變量定義語(yǔ)句放在首次使用它的地方,這樣可以提高程序的可讀性。北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量變量的命名遵循標(biāo)識(shí)符定義的規(guī)則,常用的命名約定有三種: 1、Unix環(huán)境常用的命名法 m
14、y_age、num_of_student 2、駝峰式命名法 myAge、numOfStudent 3、匈牙利標(biāo)記法 iMyCar、bIsRight2022-2-22-29-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 變量變量變量的賦值 使用賦值運(yùn)算符“=”可以將一個(gè)值賦給變量。 例如: unsigned short age; age = 18; 也可以在定義變量的同時(shí)進(jìn)行初始化: unsigned short age = 18; 或 unsigned short age (18);unsigned short age (18);2022-2-22-30-北京郵電大學(xué)信息與通信工程學(xué)院2.3
15、2.3 變量變量變量的賦值 我們可以一次定義多個(gè)相同數(shù)據(jù)類型的變量,也可以一次為多個(gè)變量初始化: char ch1=a, ch2=b ; int height=10, width=6, area ;2022-2-22-31-特性:變量可以被多次賦值,但每次賦值后,原值都會(huì)被新值覆蓋。北京郵電大學(xué)信息與通信工程學(xué)院2.2.3 3 變量變量例2-2 賦值運(yùn)算符的使用 #include using namespace std; void main() int myAge = 18; cout“myAge=” myAgeendl; myAge = 20; cout“myAge=” myAgeendl;
16、 -32-2022-2-22北京郵電大學(xué)信息與通信工程學(xué)院運(yùn)行結(jié)果: myAge = 18 myAge = 202.3 2.3 變量變量typedef 為已有的數(shù)據(jù)類型定義一個(gè)同義詞,或者叫做別名。 格式:typedef 原類型名 新類型名; 例如:typedef unsigned short int UINT16 UINT16 i;2022-2-22-33-注意:typedef語(yǔ)句并沒有定義一個(gè)新的數(shù)據(jù)類型,只是聲明了原有數(shù)據(jù)類型的一個(gè)別名。北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量常量 常量代表一個(gè)固定的值。嚴(yán)格來(lái)說(shuō),常量又分成符號(hào)常量和常數(shù)。 符號(hào)常量:是用標(biāo)識(shí)符表示的常量;
17、 常數(shù):程序中使用的具體的數(shù)據(jù)。2022-2-22-34-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量符號(hào)常量 C+中提供了一個(gè)關(guān)鍵字const,用來(lái)區(qū)分常量和變量。由于常量在程序運(yùn)行過(guò)程中不能夠被改變,所以要求常量在定義的時(shí)候必須進(jìn)行初始化。符號(hào)常量的定義格式: const 數(shù)據(jù)類型 常量名 = 常量值; 例如:const float PI = 3.14159; 2022-2-22-35-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量define關(guān)鍵字 在C語(yǔ)言中使用預(yù)編譯指令#define也能夠定義常量。 例如:#define PI 3.1415927 說(shuō)明:該語(yǔ)句屬于預(yù)
18、編譯指令,不屬于C+語(yǔ)句,因而行尾不需要使用分號(hào)。并且由于C+是向下兼容的,因而C語(yǔ)言的程序能夠在C+的編譯器下順利運(yùn)行。但是在C+編程中,建議使用const替代#define定義常量。2022-2-22-36-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量編程時(shí)使用符號(hào)常量可以增強(qiáng)程序的可讀性可以增強(qiáng)程序的可維護(hù)性2022-2-22-37-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量整型常數(shù) C+中的整型常數(shù)可以使用多種數(shù)制十進(jìn)制數(shù):100 8進(jìn)制數(shù): 0144 16進(jìn)制數(shù):0 x64整型常數(shù)默認(rèn)是int類型用 U或u表示無(wú)符號(hào)整型,如65535U 。 用 L或l表示長(zhǎng)整型
19、, 如123L。2022-2-22-38-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量實(shí)型常數(shù)1、小數(shù)形式 例如:0.123、23.12 2、指數(shù)形式表示形式: aEb代表數(shù)值:a 10b例如:123e5或123E5 =123105 2022-2-22-39- 注意: b必須是十進(jìn)制整數(shù),a可以是十進(jìn)制整數(shù)或者小數(shù)形式的實(shí)數(shù),并且數(shù)字a和b都不可以省略北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量實(shí)型常數(shù)實(shí)型常數(shù)默認(rèn)為double型可用后綴 F(f)表示實(shí)數(shù)常數(shù)為float型。可用后綴L(l)表示實(shí)數(shù)常數(shù)為long double型。2022-2-22-40-北京郵電大學(xué)信息與
20、通信工程學(xué)院2.3 2.3 常量常量字符常數(shù) 1、用單引號(hào)擴(kuò)起來(lái)的一個(gè)字符, 例如:a、 ?。 2、轉(zhuǎn)義字符 以開頭的字符序列,代表特殊的意義。 例如:n、t、”2022-2-22-41-北京郵電大學(xué)信息與通信工程學(xué)院a0 x07bell(響鈴)n0 x0A換行r0 x0D回車t0 x09制表符v0 x0B垂直跳格b0 x08Backspace0 x5C0 x22雙引號(hào)0 x27單引號(hào) ooo 1-3位8進(jìn)數(shù) xhh 1-2位16進(jìn)數(shù)2022-2-22-42-北京郵電大學(xué)信息與通信工程學(xué)院例例2 2- -3 3:打印特殊字符#include using namespace std;void m
21、ain() cout“輸出字母:” aaendl; cout“輸出字母:” nn;運(yùn)行結(jié)果: 輸出字母:a (蜂鳴器響一聲) 輸出字母:n (換行)2022-2-22-43-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量字符常數(shù)反斜線還可以和13位八進(jìn)制數(shù)或以x開始的12位十六進(jìn)制數(shù)結(jié)合表示任何ASCII字符。例如:例2-3中的輸出還可以寫為cout“輸出字母:” x61x07endl; cout“輸出字母:” x6Ex0A; 2022-2-22-44-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量字符數(shù)據(jù)的存儲(chǔ)在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲(chǔ),可看成是單字節(jié)整數(shù)表示,所以
22、,C+中字符數(shù)據(jù)和整數(shù)可以相互賦值。例2-4 字符數(shù)據(jù)和整型數(shù)據(jù)的轉(zhuǎn)換2022-2-22-45-北京郵電大學(xué)信息與通信工程學(xué)院/例例2-42-4:同樣數(shù)據(jù)的不同輸出:同樣數(shù)據(jù)的不同輸出#include using namespace std;void main() int n=a; char ch = 97; cout”按整數(shù)輸出內(nèi)容:”nendl; cout”按字符輸出內(nèi)容:”chendl;運(yùn)行結(jié)果: 按整數(shù)輸出內(nèi)容:97 按字符輸出內(nèi)容:a注意:變量在輸出時(shí),根據(jù)其本身的數(shù)據(jù)類型進(jìn)行輸出。2022-2-22-46-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量字符串常量由一對(duì)雙引號(hào)
23、括起來(lái)的字符序列。 例如:“how do you do?” “hello world!”2022-2-22-47-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量字符串常量在內(nèi)存中的存儲(chǔ)字符串常量在內(nèi)存中除了存儲(chǔ)所包含字符外,還需要存儲(chǔ)一個(gè)結(jié)束符0。一個(gè)字符數(shù)據(jù)在內(nèi)存中占用1字節(jié)的空間。2022-2-22-48-注意:字符串“A”與字符A的不同北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量思考:字符串 “x07Operatingtsystem” 有幾個(gè)字符?顯示結(jié)果如何? 2022-2-22-49-北京郵電大學(xué)信息與通信工程學(xué)院2.3 2.3 常量常量邏輯常數(shù) 邏輯型常數(shù)只有兩個(gè)
24、:false(假)和true(真)。在顯示器上顯示為0和1。2022-2-22-50-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式1、表達(dá)式2、語(yǔ)句和塊3、運(yùn)算符 賦值運(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符2022-2-22-52-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式表達(dá)式 變量、常量是存放數(shù)據(jù)的地方,那么在C+語(yǔ)言中這些數(shù)據(jù)是如何處理和計(jì)算的呢? 在C+語(yǔ)言中將變量、常量和運(yùn)算符有機(jī)結(jié)合在一起組成的就是表達(dá)式,利用表達(dá)式C+可以進(jìn)行復(fù)雜的運(yùn)算和
25、處理。 2022-2-22-53-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式表達(dá)式 表達(dá)式是操作符、操作數(shù)和分隔符號(hào)組成的序列。 操作符:+ - * / 等 操作數(shù):變量、常量、數(shù)組等 表達(dá)式總能返回一個(gè)值作為表達(dá)式的結(jié)果。2022-2-22-54-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式表達(dá)式例如:3.2 /簡(jiǎn)單表達(dá)式,值為3.2 2+3 /常量表達(dá)式,值為5 a /簡(jiǎn)單表達(dá)式,值為變量a的值x=(a+b)* c /較為復(fù)雜的表達(dá)式 y=x=a+b /表達(dá)式是可以嵌套的2022-2-22-55-北京郵電大學(xué)信息與通信工程學(xué)院2
26、.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式語(yǔ)句和塊 由表達(dá)式和結(jié)尾的“;”組成一個(gè)C+語(yǔ)句。 多條C+語(yǔ)句通過(guò)大括號(hào)括起來(lái),組成一個(gè)塊語(yǔ)句。一般來(lái)說(shuō)屬于同一個(gè)邏輯關(guān)系的多條語(yǔ)句組成塊語(yǔ)句。2022-2-22-56-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式語(yǔ)句和塊例如:實(shí)現(xiàn)將變量x和y交換的語(yǔ)句塊 int temp = x; x = y; y = temp;2022-2-22-57-注意:結(jié)束語(yǔ)句塊的大括號(hào)外不用分號(hào)。北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式運(yùn)算符 運(yùn)算符具有優(yōu)先級(jí)和結(jié)合性。 優(yōu)先級(jí): 級(jí)別高的先運(yùn)算,級(jí)別低的后
27、運(yùn)算。例如: * / 高于 + - 結(jié)合性: 自左向右結(jié)合還是自右向左結(jié)合。例如:1+2+3,+自左向右結(jié)合。 2022-2-22-58-北京郵電大學(xué)信息與通信工程學(xué)院2022-2-22-59-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式運(yùn)算符根據(jù)運(yùn)算符對(duì)操作數(shù)的要求不同,分成: 一元運(yùn)算符: 僅需要一個(gè)操作數(shù)的運(yùn)算符,例如+等 二元運(yùn)算符: 需要兩個(gè)操作數(shù)的運(yùn)算符,例如:+、-、*、/等,三元運(yùn)算符: 需要三個(gè)操作數(shù)的運(yùn)算符,只有條件運(yùn)算符“?:”。2022-2-22-60-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式賦值運(yùn)算符賦值
28、運(yùn)算符就是:“=” 例如:float f=3.15 左值:可以合法的放在“=”左邊的操作數(shù)。 右值:可以合法的放在“=”右邊的操作數(shù)。 2022-2-22-61-注意:并不是所有的操作數(shù)都可以作為左值。符號(hào)常量就不能作左值;帶運(yùn)算符的表達(dá)式一般也不能作為左值。北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式賦值運(yùn)算符例如:float x, y;float x, y;const float PI=3.14;const float PI=3.14; x = 3.5;x = 3.5;/正確正確 3.5 = x; 3.5 = x; /有語(yǔ)法錯(cuò)誤有語(yǔ)法錯(cuò)誤 y = x; y =
29、 x; /正確正確 y+2 = x-10; y+2 = x-10; /語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤PI=x;PI=x;/語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤2022-2-22-62-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符 C+提供的算術(shù)運(yùn)算符包括“+,-,*,/,%,+,-” 二元運(yùn)算符: +(加),-(減),*,/,% 一元運(yùn)算符: +(正號(hào)),-(負(fù)號(hào)),+,-2022-2-22-63-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符 幾點(diǎn)說(shuō)明:“/” 根據(jù)操作數(shù)不同,運(yùn)算規(guī)律也不同: 整型數(shù)為整除運(yùn)算:例如5/2=2; 浮點(diǎn)數(shù)為通常意義的
30、除法:即5.0/2.0=2.5?!?”取余數(shù)運(yùn)算符,只能對(duì)整型數(shù)進(jìn)行操作,余數(shù)的正負(fù)由被除數(shù)決定,不允許對(duì)浮點(diǎn)數(shù)進(jìn)行操作。例例2-5 2-5 “/ /”和和“% %”運(yùn)算符的使用運(yùn)算符的使用2022-2-22-64-北京郵電大學(xué)信息與通信工程學(xué)院/例例2-5 2-5 “/ /”和和“% %”運(yùn)算符的使用。運(yùn)算符的使用。#include #include using namespace std;using namespace std;void main()void main() int a=-4, b=3; int a=-4, b=3; couta=a b=bendl; couta=a b=be
31、ndl; couta/b= a/bendl; couta/b= a/bendl; cout(float)a/b=(float)a/bendl; cout(float)a/b=(float)a/bendl; couta%b= a%bendl; couta%b= a%bendl; coutb%a= b%aendl; coutb%a= b%aendl; 運(yùn)行結(jié)果: a=-4 b=3a=-4 b=3 a/b=-1 a/b=-1 (float)a/b=-1.33333 (float)a/b=-1.33333 a%b=-1 a%b=-1 b%a=3 b%a=32022-2-22-65-北京郵電大學(xué)信息與通
32、信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符 C+中提供了兩個(gè)特殊的運(yùn)算符:+(自增),表示將操作數(shù)加1;-(自減)表示將操作數(shù)減1前置(+i): 先自身加1,然后再將加1的值作為(+i)表達(dá)式的值; 后置(i+): 將i作為(i+)表達(dá)式的值,然后自身再加1。 例2-6自增運(yùn)算符的使用2022-2-22-66-北京郵電大學(xué)信息與通信工程學(xué)院/例2-6 自增運(yùn)算符的使用#include using namespace std;void main()int i =1; cout”i=”iendl; c o u t ” i + + : ” i + + e n d l ; cou
33、t”i=”iendl; cout” +i:”+iendl; cout”i=”iendl; 11233北京郵電大學(xué)信息與通信工程學(xué)院運(yùn)行結(jié)果: i=1 i+: 1 i=2; +i: 3 i=32022-2-22-67-2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符 在C+中可以將算術(shù)運(yùn)算符和賦值運(yùn)算符結(jié)合在一起進(jìn)行運(yùn)算,因此C+還提供5種復(fù)合的賦值運(yùn)算符:+=,-=,*=,/= 和%=。 例如: x+=y 相當(dāng)于 x = x+y x-=y相當(dāng)于 x = x-y x*=y相當(dāng)于 x = x*y x/=y相當(dāng)于 x = x/y x%=y相當(dāng)于 x = x%y2022-2-22-68-北京郵電
34、大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符例如:#include using namespace stdvoid main()int x=2,y=3; x*=y+8; coutxendl;原因:x*=y+8 等價(jià)于 x=x*(y+8)/顯示222022-2-22-69-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式2022-2-22-70-算術(shù)運(yùn)算符 算術(shù)運(yùn)算符的優(yōu)先級(jí): 1、+(正號(hào)),-(負(fù)號(hào)),+,- 2、*,/,% 3、+、- 4、=、+=、-=、*=、/=、%=由高到低北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和
35、表達(dá)式運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符溢出是指運(yùn)算結(jié)果超出了表達(dá)式的數(shù)據(jù)類型能夠表示的范圍。 在進(jìn)行算術(shù)運(yùn)算時(shí),很可能出現(xiàn)溢出。溢出不會(huì)引起編譯錯(cuò)誤的,但運(yùn)行結(jié)果會(huì)出現(xiàn)偏差。 例如:short int i=20000, j=30000,k;short int i=20000, j=30000,k; cout(k=i+j)endl;cout(k=i+j)=、=、=、=、 2、=、!= 2022-2-22-73- 高低北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符 例如: int a=1, b=2, c=3; int a=1, b=2, c=3; cout(a=b)e
36、ndl; cout(a=b)endl;/結(jié)果為結(jié)果為falsefalse,輸出為,輸出為0 0 cout(a!=b)endl; cout(a!=b)endl;/結(jié)果為結(jié)果為truetrue,輸出為,輸出為1 1 cout=b)endl; cout=b)endl;/結(jié)果為結(jié)果為falsefalse,輸出為,輸出為0 0 cout(ab)endl; / cout(ab)b=ca+5; bool d=ab=ca+5; coutdendl; / coutdb & b+)if (ab & b+) coutbcoutb的值將等于的值將等于endl;endl; coutbendl;coutb
37、endl;2022-2-22-77-運(yùn)行結(jié)果:2北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式位運(yùn)算符 一般高級(jí)語(yǔ)言:byte C/C+語(yǔ)言: bit C+語(yǔ)言中提供了六個(gè)位運(yùn)算符,可以對(duì)整數(shù)進(jìn)行位操作,分別是&(按位與),|(按位或),(按位異或),(按位取反),(右移位)。2022-2-22-78-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位與(&) 按位與操作的作用是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一位分別進(jìn)行邏輯與操作。 例如:計(jì)算3 & 5 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1
38、 3 &5:0 0 0 0 0 0 0 1 2022-2-22-79-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位與(&) 使用按位與(&)操作可以將操作數(shù)中的若干位置0(其他位不變),或者取操作數(shù)中的若干指定位。例如:將字符變量a(char)的最低位置0:a=a & 0376; 取整型變量a(int)的低字節(jié):char c= a & 0377;2022-2-22-80-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位或(|) 按位與操作的作用是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一位分別進(jìn)行邏輯或操作。
39、例如:計(jì)算3 | 5 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3 |5:0 0 0 0 0 1 1 1 2022-2-22-81-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位或(|) 使用按位或(|)操作可以將操作數(shù)中的若干位置1(其他位不變)。例如:將整型變量的a(int)的低字節(jié)置1:a = a | 0 xff; 2022-2-22-82-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位異或() 按位異或操作的作用是將兩個(gè)操作數(shù)對(duì)應(yīng)的每一位分別進(jìn)行異或操作。 具體運(yùn)算規(guī)則:11=0,00=0,1
40、0=01=1 例如:計(jì)算35 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3 5:0 0 0 0 0 1 1 02022-2-22-83-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位異或() 使用按位異或()操作可以將操作數(shù)中的若干位反轉(zhuǎn)。如果某位和0異或,結(jié)果是該位的原值;如果某位和1異或,則結(jié)果與該位原來(lái)的值相反。 2022-2-22-84-思考:如果使8位二進(jìn)制數(shù)01111010的后四位翻轉(zhuǎn)?北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式按位取反() 按位取反是一個(gè)一元運(yùn)算符,它的作用是將操作數(shù)對(duì)應(yīng)
41、的每一位分別進(jìn)行取反操作。 具體運(yùn)算規(guī)則:1=0,0=1。 例如:計(jì)算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 02022-2-22-85-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式使用位運(yùn)算實(shí)現(xiàn)掩碼運(yùn)算 掩碼:其實(shí)就是一個(gè)位模式。表示從一個(gè)字中選出一組位。 例如:掩碼0 xFF表示一個(gè)字的低位字節(jié)。 掩碼0 xFFFFFF00,它表示一個(gè)字(32位)除了最低字節(jié)外的其他高位字節(jié)。 掩碼0 xFF也可表示一個(gè)字除了最低字節(jié)外的其他高位字節(jié)。2022-2-22-86-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和
42、表達(dá)式位運(yùn)算應(yīng)用舉例例2-7 設(shè)主機(jī)A的IP地址為IPa,子網(wǎng)掩碼設(shè)置為MASKa,主機(jī)B的IP地址為IPb,子網(wǎng)掩碼設(shè)置為MASKb。(1)當(dāng)主機(jī)A向主機(jī)B發(fā)送IP包時(shí),如何判斷主機(jī)B是否與自己在同一子網(wǎng)中?(2)當(dāng)主機(jī)A和主機(jī)B通信時(shí),兩主機(jī)又如何確認(rèn)對(duì)方和自己在同一子網(wǎng)中?2022-2-22-87-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式位運(yùn)算應(yīng)用舉例例2-7 解:(1)(IPaIPb)&MASKa=0 或(IPa&MASKa)=(IPb&MASKa)(2)(IPa&MASKa)=(IPb&MASKb) 或(IPa
43、&MASKa)(IPb&MASKb)= =02022-2-22-88-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式左移: 按照指定的位數(shù)將一個(gè)二進(jìn)制數(shù)值向右移動(dòng),右移后,移出的低位舍棄。 如果是無(wú)符號(hào)數(shù)則高位補(bǔ)0,如果是有符號(hào)數(shù)則高位補(bǔ)符號(hào)位或0,在VC2005環(huán)境下高位補(bǔ)符號(hào)位。2022-2-22-89-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式移位運(yùn)算舉例char a= -8; a =a2;cout”a=”(int)aendl;2022-2-22-90-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式
44、運(yùn)算符和表達(dá)式移位運(yùn)算舉例char a=2; a =a1;cout”a=”(int)aendl;2022-2-22-91-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式位運(yùn)算符 在C+中可以將位運(yùn)算符和賦值運(yùn)算符結(jié)合在一起進(jìn)行運(yùn)算,因此C+還提供另外5種復(fù)合賦值運(yùn)算符&=,|=,=,=。 例如: x&=y 相當(dāng)于 x = x&y x|=y 相當(dāng)于x = x|y x=y 相當(dāng)于x = xy x=y 相當(dāng)于 x = x=y 相當(dāng)于 x = xy 2022-2-22-92-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式位
45、運(yùn)算符優(yōu)先級(jí)位運(yùn)算符的優(yōu)先級(jí)由高到低依次為:1、2、3、&4、5、|6、&=,|=,=,=2022-2-22-93-由高到低北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式條件運(yùn)算符 條件運(yùn)算符語(yǔ)法格式為: 表達(dá)式1?(表達(dá)式2):(表達(dá)式3); 運(yùn)算的結(jié)果是:如果表達(dá)式1的值為真,則返回表達(dá)式2的值,否則返回表達(dá)式3的值。 例如:int x=0, y=1; couty?x:y)endl;2022-2-22-94-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式逗號(hào)運(yùn)算符 逗號(hào)表達(dá)式的語(yǔ)法格式為: 表達(dá)式1,表達(dá)式2,表達(dá)式n
46、; C+順序計(jì)算表達(dá)式1,表達(dá)式2,表達(dá)式n的值,并將最后一次計(jì)算的結(jié)果作為逗號(hào)表達(dá)式的結(jié)果。 例如:int a,b,c,d; d=(a=1,b=2,c=a+b,a+b+c); coutdendl;2022-2-22-95-北京郵電大學(xué)信息與通信工程學(xué)院運(yùn)行結(jié)果:62.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換 當(dāng)表達(dá)式中出現(xiàn)多種數(shù)據(jù)類型的混合運(yùn)算時(shí),往往需要進(jìn)行類型轉(zhuǎn)換。表達(dá)式中的類型轉(zhuǎn)換分成兩種: 1、隱式類型轉(zhuǎn)換 2、強(qiáng)制類型轉(zhuǎn)換。2022-2-22-96-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式隱式類型轉(zhuǎn)換 各種二元運(yùn)算符在進(jìn)行運(yùn)算時(shí)都要求兩
47、個(gè)操作數(shù)的數(shù)據(jù)類型一致。如果類型不一致,則系統(tǒng)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換(隱式類型轉(zhuǎn)換)。 轉(zhuǎn)換的基本原則: 將精度較低、范圍較小的類型轉(zhuǎn)換成精度較高、范圍較大的類型。 char short int long float double2022-2-22-97-北京郵電大學(xué)信息與通信工程學(xué)院隱式類型轉(zhuǎn)換例2-8 數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換。#include #include using namespace std;using namespace std;void main()void main() char ch=a; char ch=a; int i=100; int i=100; double d=123.
48、09; double d=123.09; coutch+iendl; coutch+iendl; / /自動(dòng)轉(zhuǎn)換為自動(dòng)轉(zhuǎn)換為intint型型 coutch+i+dendl; / coutch+i+dendl; /自動(dòng)轉(zhuǎn)換為自動(dòng)轉(zhuǎn)換為doubledouble型型 運(yùn)行結(jié)果: 197197 320.09 320.092.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式提示:在轉(zhuǎn)換過(guò)程中不會(huì)造成數(shù)據(jù)精度的丟失。2022-2-22-98-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式隱式類型轉(zhuǎn)換 對(duì)于同一種精度的無(wú)符號(hào)數(shù)和有符號(hào)數(shù),在進(jìn)行算術(shù)運(yùn)算中,有符號(hào)數(shù)向著無(wú)符號(hào)數(shù)方向進(jìn)行隱式
49、類型轉(zhuǎn)換: signed unsigned。 例如: int a=100; unsigned int i=99; couti - aendl;2022-2-22-99-思考:如果將unsigned int i=99;改為unsigned short i=99;結(jié)果如何?北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式隱式類型轉(zhuǎn)換 邏輯運(yùn)算符要求參與運(yùn)算的操作數(shù)為bool類型,如果是其他類型,則系統(tǒng)自動(dòng)將其轉(zhuǎn)換成bool類型。轉(zhuǎn)換規(guī)則:0為false,非0為true。 賦值運(yùn)算符要求“=”左右兩邊的操作數(shù)數(shù)據(jù)類型相同,如果類型不一致,則自動(dòng)將右邊的操作數(shù)類型向著左邊的操
50、作數(shù)類型轉(zhuǎn)換。 例如:int i=3.15; coutiendl;2022-2-22-100-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換 語(yǔ)法格式為: (數(shù)據(jù)類型名)表達(dá)式 或: 數(shù)據(jù)類型名(表達(dá)式) 例如:int i=97; cout(char)iendl; float f=3.75; cout(int)fendl;2022-2-22-101-北京郵電大學(xué)信息與通信工程學(xué)院2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式C+的強(qiáng)制類型轉(zhuǎn)換符 語(yǔ)法格式為:static_cast(表達(dá)式)例如: int i=97; coutstatic_cast(
51、i)endl; float f=3.15; coutstatic_cast(f)”就可以將鍵盤鍵入的數(shù)據(jù)讀入到變量中。語(yǔ)法格式為: cin變量1變量2變量n; 例如:int a,b; char ch; cinabch;2022-2-22-106-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出例2-9:計(jì)算從鍵盤輸入的若干個(gè)整數(shù)的和。#include#includeusing namespace std;using namespace std;void main(void main( ) ) int sum=0,value; int sum=0,value; while(
52、cinvalue) while(cinvalue) /如果能從如果能從cincin提取數(shù)值,提取數(shù)值, sum+=value; / sum+=value; /則則cincin的值為真,執(zhí)行循環(huán)的值為真,執(zhí)行循環(huán) coutsum is: sumendl; coutsum is: sumendl; 運(yùn)行結(jié)果: 1 2 3 4 5 z /鍵盤輸入 sumis:152022-2-22-107-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出標(biāo)準(zhǔn)輸出流cout cout負(fù)責(zé)將變量或常量中的數(shù)據(jù)輸出到屏幕,使用插入操作符“”就可以將變量或常量的數(shù)據(jù)顯示在屏幕上。 cout能夠自動(dòng)識(shí)別
53、“”后面的數(shù)據(jù)類型并進(jìn)行顯示,并且可以從左到右一次顯示多個(gè)變量。例如:cout”Hello world!n”;2022-2-22-108-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出例2-10:cout的使用#include using namespace std;void main()int a,b;char ch;coutabch; cout”a=”a” b=”b” ch=”chendl;運(yùn)行結(jié)果:請(qǐng)按順序輸入兩個(gè)整數(shù)和一個(gè)字符: 1 2 a /鍵盤輸入 a=1 b=2 ch=a /屏幕輸出2022-2-22-109-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5
54、基本輸入輸出基本輸入輸出IO流的格式控制 庫(kù)文件:iomanip 常用操縱符: setfill(c) 設(shè)置填充字符 setw(n) 設(shè)置域?qū)挒閚 setiosflags (ios:left) 設(shè)置數(shù)據(jù)輸出左對(duì)齊 setiosflags (ios:right) 設(shè)置數(shù)據(jù)輸出右對(duì)齊 2022-2-22-110-注意:用cout輸出數(shù)據(jù)默認(rèn)的對(duì)齊方式是右對(duì)齊。北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出IO流的格式控制 setw(n) 設(shè)置域?qū)挘丛O(shè)置“”符號(hào)后面的數(shù)據(jù)占用的屏幕寬度。 例如: coutsetw(8)asetw(8)bendl;2022-2-22-111-北
55、京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出IO流的格式控制setfill(c) 設(shè)置填充字符,即“”符號(hào)后面的數(shù)據(jù)長(zhǎng)度小于域?qū)挄r(shí),使用什么字符進(jìn)行填充。例如: coutsetfill(*)setw(5)aendl; 2022-2-22-112-北京郵電大學(xué)信息與通信工程學(xué)院例2-11 setw()和setfill()的綜合使用。#include #include using namespace std;void main() coutsetfill(*) setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n set
56、w(8)n; * * * * * * *2.5 2.5 基本輸入輸出基本輸入輸出2022-2-22-113-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出IO流的格式控制關(guān)于setw( )幾點(diǎn)說(shuō)明:除了setw()控制符外,其他控制符一旦設(shè)置,則對(duì)其后的所有輸入輸出產(chǎn)生影響。而setw()控制符只對(duì)其后輸出的第一個(gè)數(shù)據(jù)有效,對(duì)其他數(shù)據(jù)沒有影響。 例如:coutsetw(8) a bendl; 2022-2-22-114- 輸出結(jié)果:_ _ _ _ _ _ _ab北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出IO流的格式控制關(guān)于setw( )幾點(diǎn)說(shuō)
57、明:setw()的默認(rèn)為setw(0),意思是按實(shí)際輸出。如果輸出的數(shù)值占用的寬度超過(guò)setw(int n)設(shè)置的寬度,則按實(shí)際寬度輸出。 例如:float f=0.12345; coutsetw(3)fendl; 2022-2-22-115- 輸出結(jié)果: 0.12345北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出I/O流的格式控制 C+默認(rèn)輸出浮點(diǎn)數(shù)的有效位為6位,那么要想控制輸出的數(shù)據(jù)的長(zhǎng)度,該如何呢? 例如:float f=3.1234567;如何讓顯示結(jié)果為3.12?C+提供了setprecision(int n)可以控制顯示浮點(diǎn)數(shù)的有效位。例2-12 控制浮
58、點(diǎn)數(shù)的數(shù)字個(gè)數(shù)。2022-2-22-116-北京郵電大學(xué)信息與通信工程學(xué)院/例例2-12 2-12 控制浮點(diǎn)數(shù)的數(shù)字個(gè)數(shù)。控制浮點(diǎn)數(shù)的數(shù)字個(gè)數(shù)。#include #include using namespace std;void main() float f=17/7.0;coutfendl;coutsetprecision(0)fendl;coutsetprecision(1)fendl;coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(6)fendl;coutsetprecision(8)fendl;運(yùn)行結(jié)
59、果:2.428572.4284722.42.432.428572.42857152022-2-22-117-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出I/O流的格式控制 如何控制小數(shù)的位數(shù)? setiosflags(ios:fixed)控制符是用定點(diǎn)方式表示浮點(diǎn)數(shù),將setprecision(int n)和setiosflags(ios:fixed)結(jié)合,可以使用setprecision(int n)控制小數(shù)點(diǎn)右邊小數(shù)的個(gè)數(shù)。當(dāng)設(shè)置為定點(diǎn)格式時(shí),若不設(shè)置精度則顯示6位有效小數(shù)。例2-13 定點(diǎn)小數(shù)的輸出。2022-2-22-118-北京郵電大學(xué)信息與通信工程學(xué)院/例
60、例2-12 定點(diǎn)小數(shù)的輸出。定點(diǎn)小數(shù)的輸出。#include #include using namespace std;void main() float f=17/7.0; coutsetiosflags(ios:fixed); coutfendl; coutsetprecision(0)fendl; coutsetprecision(2)fendl; coutsetprecision(3)fendl; coutsetprecision(4)fendl;運(yùn)行結(jié)果:2.42587122.432.4292.42862022-2-22-119-北京郵電大學(xué)信息與通信工程學(xué)院2.5 2.5 基本輸入輸出基本輸入輸出I/O流的格式控制 如何控制指數(shù)表示法的小數(shù)個(gè)數(shù)? setiosflags(ios:scientific)控制符使用指數(shù)方式顯示浮點(diǎn)數(shù),將setpre
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)語(yǔ)文教學(xué)提高學(xué)生閱讀理解能力的路徑研討
- 企業(yè)支付貨款合同范例
- 減水劑運(yùn)輸合同范例
- oem藥品合同范例
- 共同制作招牌合同范例
- 分期抵押車合同范例
- 中醫(yī)門診加盟合同范例
- 房屋壓頂施工方案范本
- 倉(cāng)儲(chǔ)信息咨詢合同范例
- 樂隊(duì)商演合同范例
- 2025年湖南鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶答案
- 部編高教版2023·職業(yè)模塊 中職語(yǔ)文 2.《寧夏閩寧鎮(zhèn):昔日干沙灘今日金沙灘》 課件
- 2022年袋鼠數(shù)學(xué)競(jìng)賽真題一二年級(jí)組含答案
- 3.《東施效顰》課件PPT
- 幼兒園小班語(yǔ)言《娃娃開門》課件
- 梯籠安裝施工方法
- JIS G4304-2021 熱軋不銹鋼板材、薄板材和帶材
- 浮針療法之頸椎病的治療ppt課件
- 手足口病培訓(xùn)課件(ppt)
- 五防、后臺(tái)調(diào)試報(bào)告
- VISIO圖標(biāo)大全(完整版)
評(píng)論
0/150
提交評(píng)論