數(shù)據(jù)類型與表達式.ppt_第1頁
數(shù)據(jù)類型與表達式.ppt_第2頁
數(shù)據(jù)類型與表達式.ppt_第3頁
數(shù)據(jù)類型與表達式.ppt_第4頁
數(shù)據(jù)類型與表達式.ppt_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 數(shù)據(jù)類型與表達式,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,C+語言程序設計教程 第1章 C+編程簡介,第2章 數(shù)據(jù)類型與表達式,學習目標,掌握各種基本數(shù)據(jù)類型的定義名、長度、表示范圍; 掌握各種類型的數(shù)值的表示; 弄清變量以及變量賦值的實質(zhì),標識符的構(gòu)成規(guī)則,會定義各種類型的變量以及定義變量的初值; 弄清變量與常量,三種常量之間的區(qū)別; 掌握常用運算符的含義、優(yōu)先級、結(jié)合性、使用方法; 理解表達式的構(gòu)成規(guī)則、表達式的左值和右值的含義,會根據(jù)計算式寫出相應的表達式; 掌握隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換的概念和使用方式,能夠使用顯式類型轉(zhuǎn)換強制進行表達式值的轉(zhuǎn)換。,C+語言程序設計教程

2、 第2章 數(shù)據(jù)類型與表達式,C+語言程序設計教程 第1章 C+編程簡介,2.1 數(shù)據(jù)類型概述,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,C+語言程序設計教程 第1章 C+編程簡介,2.2 基本數(shù)據(jù)類型,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.2.1 字符集,字符集是構(gòu)成C+程序語句的最小元素。字符集由下列各類字符構(gòu)成:,(1) 英文字母 AZ, az,(2) 數(shù)字 0-9,(3) 特殊字符:,C+語言程序設計教程 第1章 C+編程簡介,2.2.2 基本數(shù)據(jù)類型,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,表中符號 表示可選,表示其中的內(nèi)容可以缺省,也有默認的意思。如sig

3、ned char表示char類型默認為signed char;使用類型名定義一個變量時,中的內(nèi)容可以省略。,整型int默認為有符號整型,即:類型signed int與int相同,所以signed short int、signed long int分別與short int、long int相同。,如果int型有長短修飾或符號修飾時,int也可缺省。,符號的類型修飾signed, unsigned與長短的修飾short,long可以隨意組合,且前后順序隨意。,整型數(shù)據(jù)的長度(存儲空間)隨系統(tǒng)的不同而不同,在16位系統(tǒng)下如DOS,其長度與短整型相同,占有16bit。在32位系統(tǒng)如Linux、Unix

4、、Windows NT系統(tǒng)下,長度為32bit。表中的整型是32位系統(tǒng)下的整型。,有效位數(shù)欄中的數(shù)據(jù)是指浮點數(shù)十進制的有效位數(shù),包括整數(shù)與小數(shù)部分。,空值型void用于描述沒有返回值的函數(shù)以及通用指針類型。,有的編譯器如visual C+對long double采用8字節(jié)存儲。,C+中提供wchar_t類型,用于描述像漢字這樣的大字符集。漢字字符集有簡體字符集GB2312、繁體字符集Big5。在C+中,對于大字符集字符可用多個char類型的數(shù)據(jù)來實現(xiàn),wchar_t類型主要用在國際化程序的實現(xiàn)中。 。,C+語言程序設計教程 第1章 C+編程簡介,2.3 數(shù)值,C+語言程序設計教程 第2章 數(shù)據(jù)

5、類型與表達式,數(shù)值就是指直接參加運算的數(shù)。在有的書上稱為文字常量(literal constant)或常量。文字是程序中直接用符號表示的數(shù)值,常量是指在程序運行過程中,其值不能被改變的量。出現(xiàn)在程序中的數(shù)值在程序運行過程中是不能被改變的,故稱之為文字常量。通俗說,文字常量就是數(shù)值。,2.3.1 整型數(shù),各種進制的整數(shù)表示如下:,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,以0 x或0X開頭, 數(shù)字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中英文字母AF代表的值為1015。 如:0 x12B表示十六進制數(shù)(12B)16,其

6、值為:1162+2161+11160,等于十進制數(shù)299。-0 x17等于十進制數(shù)-23。 十六進制使用的英文字母除了使用大寫字母外還可以使用a、b、c、d、e、f小寫字母,并且大小寫可以混用。,(3)十六進制整數(shù),注意: 各進制數(shù)只能使用其規(guī)定的數(shù)字, 進制使用的數(shù)字為0N-1。如0128是不合法的八進制數(shù),因為8不是八進制所使用的數(shù)字。 八進制整數(shù)前不能省略0,省略了0就是十進制數(shù)。,各種類型整數(shù)的表示,(1)基本整型數(shù),基本整型數(shù)不需要在數(shù)字后加任何后綴。在16位系統(tǒng)下,整型數(shù)的長度為16bit(2字節(jié)) 如:12、-1235等是用十進制表示的整型數(shù)。如0 xc、0 xfb2d是用十六進

7、制表示的整型數(shù),其值分別為12、-1235。 在32位系統(tǒng)下,長度為32bit(4字節(jié)),如:12、-1235等。12、-1235用十六進制表示分別為0 xc、0 xfffffb2d。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,長整型的長度與取值范圍與32位系統(tǒng)下的基本整型一樣。表示方法則是在數(shù)字后加l或L做標記。如:345667L、-123L、12l。,(2) 長整型數(shù),注意: 為了區(qū)別表示長整型數(shù)字母l與數(shù)字1,一般使用大寫L; 在定義一個整型數(shù)時,不管采用哪種進制形式,都不要超過其表示范圍。,C+語言程序設計教程 第1章 C+編程簡介,C

8、+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,(1) 十進制數(shù)形式,由09和小數(shù)點組成。如:23.456、-12.3等。,(2) 指數(shù)形式,表示格式為:,2.3.2 浮點型數(shù),浮點型數(shù)即我們平常使用的實型數(shù),由整數(shù)部分和小數(shù)部分組成。通常有兩種表示形式:,十進制浮點型數(shù)基本整型數(shù)1 E 基本整型數(shù)2,符號 | 表示“或”。,十進制浮點型數(shù)與基本整型數(shù)1是尾數(shù);,E或e代表底數(shù)10;,基本整型數(shù)2為指數(shù)。如:1.3e4、-12.5e-4分別表示1.3104和-12.510-4。,注意: 當以指數(shù)形式表示一個實數(shù)時,整數(shù)部分和小數(shù)部分可以省略其一,但不能都省略。如.123E5、123.E-6都是正

9、確的,但不能寫成E-2這種形式。 浮點數(shù)默認為雙精度浮點型,在內(nèi)存中占8個字節(jié),取值范圍為1.7e308。如果帶有后綴F或f, 則為float類型,在內(nèi)存中占4個字節(jié),取值范圍為3.4e38,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,轉(zhuǎn)義符形式1:,2.3.3 字符型數(shù),字符數(shù)是用英文單引號括起來的一個字符。如:a,A等。,字符助記符,有些ASCII碼字符如回車、退格等不能直接用在用單引號中。這些數(shù)據(jù)可用轉(zhuǎn)義序列來表示 :,轉(zhuǎn)義符形式2:,字符助記符只有一個字母,例如n、t分別為newline(換行符)、table(制表符)的助記符。故n、t分

10、別表示換行符與制表符。,字符的ASCII碼值,字符的ASCII碼值的形式為ooo與xhh, 其中ooo表示3位八進制數(shù),xhh表示2位十六進制數(shù)。例如, 制表符table用第2種形式的轉(zhuǎn)義序列表示為011或x09。ooo中,ooo為不超過3位的八進制數(shù)字,可以不以0開頭。,C+語言程序設計教程 第1章 C+編程簡介,常用預定義的轉(zhuǎn)義序列,C+語言程序設計教程 第1章 C+編程簡介,轉(zhuǎn)義序列的用法舉例,運行結(jié)果,A;B;C;D;E;F;屯屯,注意: 由于一個漢字字符包括兩個字符,因此不能在單引號中使用漢字。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達

11、式,This is a stringn,字符串與字符比較的區(qū)別:,2.3.4 字符串,字符串數(shù)值簡稱字符串,是使用一對雙引號括起來的字符序列。例如, 英文串:,中文串: 我們都是中國人t我們熱愛自己的祖國n,(1) 字符由單引號括起來,字符串由雙引號括起來。如:a與a分別表示a字符與a這個字符串。 (2) 字符只能是單個字符,字符串則可是零個或多個字符。如:abd是不合法的。但是合法的,表示空串。 (3) 字符占一個字節(jié)的內(nèi)存空間,字符串占內(nèi)存字節(jié)數(shù)等于字符串的長度加1。系統(tǒng)自動在字符串末尾添加0作為結(jié)束標記。如:a在內(nèi)存中占用一個字節(jié);而a 在內(nèi)存中占用兩個字節(jié),分別存放a和0。,2.3.5

12、 布爾型數(shù),布爾型數(shù)值只有兩個:true(真)和false(假)。在C+的算術運算式中,把布爾型數(shù)據(jù)當作整型數(shù)據(jù),true與false分別當作1與0。在邏輯運算式中則把非0數(shù)據(jù)當成true, 把0當成false。,注意: 不能將true與false寫成TRUE與FALSE。,C+語言程序設計教程 第1章 C+編程簡介,2.4 變量,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,變量是存儲數(shù)據(jù)的內(nèi)存區(qū)域,變量名是這塊區(qū)域的名字或助記符。變量之所以叫變量是因為在程序運行的過程中變量標識的內(nèi)存區(qū)中的數(shù)據(jù)可以改變。在C+中變量取名要遵循標識符的構(gòu)成規(guī)則。,2.4.1 標識符與關鍵字,標識符用來標識程

13、序中的一些實體。標識符的構(gòu)成規(guī)則如下:,(1) 以大寫字母、小寫字母或下劃線_開頭;,(2) 可以由大寫字母、小寫字母、下劃線、數(shù)字組成;,(3) 大寫字母與小寫字母分別代表不同的標識符;,(4) 不能是C+的關鍵字。,C+的關鍵字是C+預定義的單詞,也叫保留字,意思是為C+語言保留,不能用作標識符。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,C+的關鍵字表,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,變量定義的一般格式為:,例如: int sum, area; float x,y,z;,給變量賦

14、初值的格式如下:,2.4.2 變量的定義與賦初值,數(shù)據(jù)類型 變量名1,變量名2,變量名n;,數(shù)據(jù)類型 變量名1=初值1,變量名2=初值2,變量名n=初值n;,例如: int sum=100; double pi=3.1416; char c1=a, c2=b;,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,變量定義的l另一種格式為:,例如: int sum(100); double pi(3.1416); char c1(a), c2(b);,數(shù)據(jù)類型 變量名1(初值1),變量名2(初值2),變量名n(初值n);,2.4 常量,常量是指在程序運行過

15、程中,其值不能被改變的量。因此,一個具體的數(shù)值稱為文字常量。如:i=255; area=r*r*3.14;,在程序中直接使用數(shù)值有兩個問題:,(1)可讀性差 ;,(2)可維護性差 ;,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,C+符號常量的定義形式如下:,例如: #define MaxChar 255 #define PI 3.14,2.5.1 符號常量,#define 符號常量名 數(shù)值,注意: 定義符號常量時不能用賦值符,#define PI=3.14是錯誤的。 由于define 是預處理指令,語句不能以分號結(jié)尾。,C+為符號常量提供了一種新

16、方法,格式為:,2.5.2 常變量,const 數(shù)據(jù)類型 符號常量名 = 數(shù)值;,const可以與數(shù)據(jù)類型說明顛倒。,用const修飾后,變量的值就不能改變了,實質(zhì)上是一種“常變量”。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,例如: const short int MaxChar=255; const float PI=3.14;,三種常量比較表:,與直接使用文字常量相比,使用符號常量增強了程序的可讀性,可維護性。,常變量與變量定義的格式相似,使程序保持良好的風格。,常變量可以按照不同的需要選擇合適的數(shù)據(jù)類型,節(jié)省內(nèi)存空間,在運算式中有明確的

17、類型。,注意: 在定義常變量時一定要賦初值。 例如:const float PI; /錯誤,定義時沒有給出初值 常變量不是變量,在程序中間不能更新其值。 例如:PI= 3.14159; /錯誤!常量不能被改變,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,運算符是描述對數(shù)據(jù)進行的運算(操作)、體現(xiàn)數(shù)據(jù)之間運算關系的符號,運算符也叫操作符。 表達式是運算符與數(shù)據(jù)連接起來的表達運算的式子,表達式也稱運算式。,優(yōu)先級是指表達式中運算符運算的順序。當一個表達式中包含多個運算符時,先進行優(yōu)先級高的運算,再進行優(yōu)先級低的運算。如果表達式中出現(xiàn)了多個相同優(yōu)先級的

18、運算,運算順序就要看運算符的結(jié)合性了。 結(jié)合性是指操作數(shù)左右兩邊運算符的優(yōu)先級相同時,優(yōu)先和哪個運算符結(jié)合起來,進行運算。運算符的結(jié)合順序有兩種:左結(jié)合和右結(jié)合。,2.6.1 優(yōu)先級與結(jié)合性,左結(jié)合,num1 op1 num2 op2 num3 (num1 op1 num2) op2 num3,右結(jié)合,num1 op1 num2 op2 num3 num1 op1 (num2 op2 num3),2.6 運算符與表達式,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,基本算術運算符及其含義:,表中優(yōu)先級數(shù)字小的優(yōu)先級高,(1) 算術運算符的意義、優(yōu)先

19、級與數(shù)學中一致:+(正號), -(負號)是一元運算,優(yōu)先級高于二元運算,*、/、%優(yōu)先級高于+(加)、-(減)運算。,例如:a=10; b=5; a+b*-1; 得到結(jié)果5,(2) %要求兩個操作數(shù)的值必須是整數(shù)或字符型數(shù)?!安僮鲾?shù)1%操作數(shù)2”計算結(jié)果是操作數(shù)1被操作數(shù)2除的余數(shù)。當兩個操作數(shù)都是正數(shù)時,結(jié)果為正;如果有一個(或兩個)操作數(shù)為負,余數(shù)的符號取決于機器。,21%6 /結(jié)果是3 4%2 /結(jié)果是0 21%-5 /機器相關:結(jié)果為-1或1,2.6.2 算術運算符,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,基本算術運算符及其含義:,2

20、.6.2算術運算符,(3) 當/運算符用于兩個整數(shù)相除時,如果商含有小數(shù)部分,將被截掉。如果要進行通常意義的除運算,則至少應保證除數(shù)或被除數(shù)中有一個是浮點數(shù)或雙精度數(shù)。,(4) 在使用算術運算符時,需要注意有關算術表達式求值溢出的處理問題;,5/4 /結(jié)果是1 4/5 /結(jié)果是0 5/4.0 /結(jié)果是1.25 4.0/5 /結(jié)果是0.8,short i=32767,j,k; j=i+1; k=i+2; coutj=j , k=kendl; 執(zhí)行結(jié)果為:j=-32768, k=-32767,注意: 在書寫除法運算式時,通常將參加運算的整數(shù)值后補上小數(shù)點與0作為雙精度(double)常量參加運算。

21、,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,關系運算符及其含義:,2.6.3 關系運算符,(1)若關系運算符的計算結(jié)果繼續(xù)用在表達式中,true與false分別當成了1與0。 。,(2)關系運算符的操作數(shù)可以是任何基本數(shù)據(jù)類型的數(shù)據(jù),但由于實數(shù)(float)在計算機中只能近似地表示一個數(shù),所以,一般不能直接進行比較。當需要對兩個實數(shù)進行=、!=比較時,通常的做法是指定一個極小的精度值,若兩實數(shù)的差在這個精度之內(nèi)時,就認為兩實數(shù)相等,否則為不等。,x=y 應寫成 fabs(x-y)1e-6 /fabs(x)求double類型數(shù)x的絕對值,(3)關

22、系表達式就是由關系運算符將兩個操作數(shù)連接起來的式子。這兩個操作數(shù)可以為常量、變量、算術表達式等。,例如:a+bc+d ab=cd a = bc,注意: 關系運算符的比較運算是由兩個等號組成,不要誤寫為賦值運算符=。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,邏輯運算符操作數(shù)類型為bool型,返回類型亦為bool型。,2.6.4 邏輯運算符,(1)邏輯運算符的操作數(shù)為bool型,當為其它數(shù)據(jù)類型時,將它轉(zhuǎn)換成bool值參加運算。,(2) C+對于二元運算符 二進制表示分別為10000111和 00101011。,(4)運算符 將兩個操作數(shù)對應位逐

23、一地進行邏輯異或運算。邏輯異或運算的規(guī)則為“同則零,異則壹”,即兩個數(shù)只要不同,則其邏輯異或的結(jié)果就為1;否則為0。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.5 位運算符,(5) 運算符 將左操作數(shù)向左移動其右操作數(shù)所指定的位數(shù),移出的位補以0。將一個數(shù)左移一位,相當將該數(shù)乘以2;左移兩位,相當將該數(shù)乘以4。一般說來,將一個數(shù)左移n位,就相當將該數(shù)乘以2n。所以,在程序中,常用左移位來進行快速的乘法運算。,(6) 將左操作數(shù)向右移動其右操作數(shù)所要求的位數(shù),移出的位補以0。將一個數(shù)右移n位,相當于將該數(shù)除以2n。這與整型和字符型數(shù)據(jù)的除

24、法運算完全一致,所以在程序中常用右移位來進行快速的除法運算。,注意: 位運算符是對其操作數(shù)按其二進制形式逐位地進行邏輯運算或移位操作的, 運算對象為bool、char、short、int等類型數(shù), 但不得是實型數(shù)據(jù)。 用移位方法進行乘法運算時,同樣要注意溢出問題。 按位左移運算符與插入運算符同形(同一個符號),按位右移運算符與提取運算符同形。那么編譯器是如何來區(qū)分cout73;是將7左移3位,還是向屏幕上輸出7、3呢? 編譯器將把該表達式解釋成向屏幕輸出7、3,這是由于cout是C+語言中預定義的輸出流類的對象,在該對象所屬的類中,對運算符所執(zhí)行的操作進行了新的定義。對于按位右移與提取運算符,

25、編譯器也是按此原則解釋。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,賦值運算符表,2.6.6 賦值運算符,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.6 賦值運算符,簡單賦值運算符的使用格式:,左表達式 = 右表達式,其功能是將右表達式(右操作數(shù))的值放到左表達式表示的內(nèi)存單元中,因此左表達式一般是變量或表示某個地址的表達式,稱為左值,在運算中作為地址使用。右表達式在賦值運算中是取其值使用,稱為右值。所有賦值運算左表達式都要求是左值。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程

26、序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.6 賦值運算符,復合賦值運算符的運算過程為:先將兩個表達式做運算符所規(guī)定的算術或位運算,然后將運算的結(jié)果賦給左表達式。,例如:設a和b的值分別為2和6,復合賦值運算式b*=a+3的計算過程為: 先計算復合賦值運算符的右表達式的值,即a+3的和,結(jié)果為5; 然后,做復合賦值運算符所規(guī)定的算術運算,即求b與上述結(jié)果的乘積,結(jié)果為30; 最后進行賦值運算,將上述運算結(jié)果賦給復合賦值運算符的左操作數(shù)b。同時,整個表達式的值也為30。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第 2章 數(shù)據(jù)類型與表達式,2.6.6 賦值運算符,關于賦

27、值運算符的說明:,(1) 用賦值運算符連接起來的表達式叫做賦值表達式。賦值表達式是C+語言(包括C語言)中所特有的,其它大多數(shù)語言中,只有賦值語句而沒有賦值表達式這一語法要素。賦值表達式仍可作為操作數(shù)進行運算,賦值表達式的類型為左邊變量的類型,其返回值為賦值后左邊變量的值。,float x; x=2.6; /返回值為2.6, 類型為float;,(2) 復合賦值運算符所表示的表達式不僅比一般賦值運算符表示的表達式簡練,而且所生成的目標代碼也較少,因此,C+語言程序中應盡量采用復合賦值運算符的形式表示。,(3) 在C+中還可以連續(xù)賦值,賦值運算符具有右結(jié)合性.,x=y= 2.6; / 它相當于:

28、x=(y=2.6); a=b=3+8; /先做3+8,然后將11賦給b,再將b的值11賦給a。 c=b*=a+3; /運算分解為 a+3 b=b*(a+3) c=b,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.7 +、-運算符,這兩個運算符都前置和后置兩種形式。所謂前置是指運算符在操作數(shù)的前面,后置是指運算符在操作數(shù)的后面。 例如: i+; /+后置 -j; /-前置,(1) 都是使操作數(shù)的值增1或減1,但對表達式的值的影響卻完全不同。,前置形式 int i=5; x=+i; y=i; / i先加(增值)后再賦給x (i=6, x=6,y

29、=6) int i=5; +i; x=y=i; / (i=6, y=6,x=6) 后置形式 int i=5; x=i+; y=i; / i賦給后再加(x=5, i=6,y=6) int i=5; i+; x=y=i; / (i=6, y=6,x=6),(2) 由于+、-運算符內(nèi)含了賦值運算,所以運算對象只能左值,不能作用于常量和表達式。5+、 (x+y)+都是不合法的。,前綴運算是先變化后運算,后綴運算是先運算后變化。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.8 其它運算符,1. 條件運算符,條件運算符也稱三目運算符, 是C+中唯一的

30、一個三目運算符。格式為:,其中,d1,d2和d3分別是三個表達式。該運算符的功能是: 先計算d1; 如果d1的值為true(非0),返回d2的值作為整個條件運算表達式的值; 如果d1的值為false(0),返回d3的值作為為整個條件運算表達式的值。 條件運算表達式的返回類型將是d2和d3這兩個表達式中類型高(表示的數(shù)值范圍大)的那種類型。,例如: a=(xy ? 12 : 10.0); /若xy(xy的值為true), 將12賦給a; 否則a=10.0。條件運算表達式的返回類型為10.0的類型double。 x?y=a+10:y=3*a-1; /若x非0則把a+10的值賦給y,否則把3*a-1

31、的值賦y,d1 ?d2:d3,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.8 其它運算符,2. 逗號運算符,逗號可作分隔符使用,將若干變量隔開,如:int a,b,c;一般形式為:,逗號表達式的求解過程為:先求表達式1的值,再求表達式2的值,最后求表達式n的值。整個逗號表達式結(jié)果的值是最后一個表達式n的值。它的類型也是最后一個表達式的類型。,例如: a=a+b, b=b*c, c=c-a; 設a=3,b=5,c=7,該表達式依次計算出a的值為8、b的值為35、c的值為-1、且整個表達式的值為-1。更進一步: x=(a=a+b, b=b*c

32、, c=c-a) ; / x的值為-1。,表達式1,表達式2,表達式n;,逗號運算符還用在只允許出現(xiàn)一個表達式而又需要多個表達式才能完成運算的地方,用它將幾個表達式連起來組成一個逗號表達式。,在C+語言所有運算符中,逗號表達式的優(yōu)先級最低。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.8 其它運算符,3.求字節(jié)運算符 sizeof,sizeof運算符用來求得某種類型或某個變量所占字節(jié)數(shù)(長度)。它是一個單目運算符,用在類型說明符或變量名的左邊,該運算符的使用形式如下:,例如:int a,b 10;,sizeof (類型說明符 | 變量名

33、| 常量 ),在32位系統(tǒng)下,表達式sizeof(a)的值應該為4,與sizeof (int)的值相等;同樣,sizeof (b)的值為40,它是數(shù)組b的所有元素所占的總內(nèi)存字節(jié)數(shù); sizeof(3.1)的值為8,即雙精度數(shù)的長度。,(1)下標運算符 。,4.成員運算符,(2) 取結(jié)構(gòu)或聯(lián)合變量成員運算符.,(3) 通過指針取結(jié)構(gòu)或聯(lián)合體成員運算符-,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.6.8 其它運算符,5. 取地址運算符 /降低了精度 float f=3.5; /未降低精度,(7) 將signed型的整型變成較長的signed型

34、的整型,unsigned型變成較長的整型時,原值以及正負符號不變。,int a=-2; long b=a; /b的值仍為-2,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.7 類型轉(zhuǎn)換,(8) 將unsigned型和同長度的signed型互變時,其值根據(jù)自身所屬范圍發(fā)生適當?shù)淖兓?unsigned short a=65535; short int b=a; / b的值變成-1 short int a=-2; unsigned short b=a; / b的值變成65534,假設定義變量為:char c=1;float f=3.1; 表達式(

35、3 = f ) + ( B - c ) / 1.0 + f的類型轉(zhuǎn)換圖如下:,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.7 類型轉(zhuǎn)換,2. 強制類型轉(zhuǎn)換,舊式的C語言風格的強制類型轉(zhuǎn)換的格式如下:,類型說明符 (表達式) 或 (類型說明符) 表達式,例如:int(a+b) /將a+b運算的結(jié)果轉(zhuǎn)換成int型 5/float(3) /將3轉(zhuǎn)換成float型,int a;float x=8.57; a=(int)x; /取整數(shù)部分,舍棄小數(shù)部分 結(jié)果a=8,x仍為float型,其值仍為8.57。,采用強制類型轉(zhuǎn)換將高類型數(shù)據(jù)轉(zhuǎn)換為低類型數(shù)據(jù)時,數(shù)據(jù)精度可能會受到損失。,C+語言程序設計教程 第1章 C+編程簡介,C+語言程序設計教程 第2章 數(shù)據(jù)類型與表達式,2.7 類型轉(zhuǎn)換,標準C+強制類型轉(zhuǎn)換:,static_cast用于一般表達式的類型轉(zhuǎn)換。 例如: int a;float x=8.57; a=static_cast (x); /將變量x的類型轉(zhuǎn)換成int型。,static_cast (表達式) reinterpret_cast (表達式) const_cast (表達式) dynamic_cast (表達式),reinterpret_cast用于非標準的指針數(shù)據(jù)類型轉(zhuǎn)換,如將void *轉(zhuǎn)換成char *。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論