版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章 數(shù)據(jù)類型和表達式,3.1 C+的字符集、關(guān)鍵字和標識符 3.2 C+的基本數(shù)據(jù)類型 3.3 運算符與表達式 3.4 常用庫函數(shù),3.1 C+的字符集、關(guān)鍵字和標識符,C+語言的字符集,編寫C+程序必須使用C+語言字符集中的字符: 大寫、小寫英文字母各26個; 阿拉伯數(shù)字10個; 運算符、標點符號及其他字符30個: + - * / % = ! : ? , . “ ( ) # _ 空格 例外: 源程序注釋中可以包含字符集以外的字符。 字符串作為數(shù)據(jù)也可以包含字符集以外的字符。,標識符,標識符的用途:程序中的變量名、函數(shù)名、數(shù)組名、類型名、命名空間名等的命名。 標識符的構(gòu)成:由大小寫字母、數(shù)
2、字和下劃線組成,且首字符必須是字母或下劃線,不能與關(guān)鍵字同名。 說明: 標識符中不能含有空格、標點符號和其他字符。 標識符區(qū)分大小寫。例如,d和D是不同的標識符。 標識符的有效長度取決于具體的C+編譯系統(tǒng)。 標識符應體現(xiàn)“見名知義”原則,注重可讀性。,關(guān)鍵字,關(guān)鍵字又稱保留字,是編程語言預定義的具有專門用途的標識符,不允許用作用戶的標識符。 C+語言有48個標準關(guān)鍵字。 注意:有的C+編譯系統(tǒng)支持的關(guān)鍵字不止這些。如VC+還有_int8、_int16、_int32、_int64、_inline等關(guān)鍵字。,3.2 C+的基本數(shù)據(jù)類型,程序處理的對象是數(shù)據(jù),數(shù)據(jù)分為常量和變量。每個常量或變量都有數(shù)
3、據(jù)類型。 C+的數(shù)據(jù)類型分為兩大類:基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型。 基本數(shù)據(jù)類型是指C+內(nèi)部預先定義的類型,包括整型、字符型、實型、邏輯型和空類型; 非基本數(shù)據(jù)類型是用戶定義的類型,包括數(shù)組、指針、結(jié)構(gòu)、聯(lián)合、枚舉和類。,基本數(shù)據(jù)類型,數(shù)據(jù)類型用于描述程序中的數(shù)據(jù)。 學習數(shù)據(jù)類型,要掌握每種類型占用的內(nèi)存字節(jié)數(shù)、取值范圍及所支持的操作。 例如,基本數(shù)據(jù)類型int,用于描述整數(shù),占用4字節(jié)內(nèi)存(在VC+中),取值范圍是-21474836482147483647,支持的操作包括加、減、乘、除等運算。 基本數(shù)據(jù)類型見表3-1所示。,字符類型,字符類型用關(guān)鍵詞char表示,用于描述單個字符數(shù)據(jù)。 字符
4、采用ASCII編碼(見附錄)來表示,在存儲時占用一個字節(jié)。 由于ASCII編碼是正整數(shù)值且只使用了一個字節(jié)的低7位二進制位,最高位為0,為了便于字符數(shù)據(jù)的處理,同時也為了一字節(jié)整型數(shù)據(jù)的表達和處理,C+允許把char型數(shù)據(jù)當作整型數(shù)據(jù),因此,C+允許用signed和unsigned修飾char,即可以有signed char和unsigned char類型。,整數(shù)類型,整數(shù)類型(整型)用于描述整數(shù)。 基于合理占用內(nèi)存和提高數(shù)據(jù)處理速度的考慮,將整型分為: 一字節(jié)整型:char,signed char,unsigned char。 雙字節(jié)整型:short int,short,signed sho
5、rt,signed short int,unsigned short,unsigned short int。 四字節(jié)整型:int,signed int,unsigned int, unsigned,long int,long,signed long,signed long int,unsigned long,unsigned long int。,整數(shù)類型,若表達的整數(shù)超出四字節(jié)整型的表示范圍,則: 可用有些C+編譯系統(tǒng)提供了八字節(jié)整型,如VC+的_int64整型。 如果所表達的整數(shù)對精度要求不高,則可選用float或double型替代。 如果所表達的整數(shù)對精度要求特別高,則只好自編多字節(jié)整型數(shù)
6、運算的程序。,整數(shù)類型,無符號整型數(shù)據(jù)在計算機內(nèi)部用原碼表示,即它的二進制數(shù)表示。 帶符號整型數(shù)據(jù)在計算機內(nèi)部用補碼表示。 正數(shù)的補碼形式就是它的原碼; 負數(shù)的補碼形式由其相應的正數(shù)的原碼的各位逐位求反后在最低位加1而得到。 例如:若用雙字節(jié)整型,則1和-1的補碼分別是0000000000000001,1111111111111111。,實數(shù)類型,實數(shù)類型(實型)又稱浮點型,用于描述實數(shù)?;诤侠碚加脙?nèi)存和提高數(shù)據(jù)處理速度的考慮,將實型分為單精度型(用float表示)和雙精度型(用double表示)。對于double型,還可用long修飾,使其成為long double型,以表示精度更高的實型
7、數(shù)。 在計算機內(nèi)部,實型數(shù)據(jù)用浮點形式(科學記數(shù)法)表示,即把數(shù)據(jù)表示成m2e,其中m稱為尾數(shù),e稱為階碼。實型數(shù)據(jù)在計算機中存儲的是尾數(shù)和階碼兩部分。 由于實型數(shù)據(jù)是不連續(xù)的,因此,無法精確表示每個實數(shù),只能用實型數(shù)據(jù)近似表達實數(shù)。,空值,空值型:用void表示。 void類型用于: 描述函數(shù)沒有返回值(參見第6章) 函數(shù)沒有參數(shù)(參見第6章) 無類型指針(參見10.8.3節(jié)),常量,常量:程序執(zhí)行過程中,其值不能被改變的量。 常量分為:字面常量和標識符常量。 字面常量:在程序中不要任何說明就可直接使用的常量。如,12,34.5。 字面常量分為:整型常量、實型常量、字符型常量和字符串常量。
8、標識符常量:經(jīng)說明或定義后才能使用的常量。,整型常量,整型常量可用十進制、八進制、十六進制來表示。 十進制整數(shù):由09數(shù)字組成,除表示正負數(shù)的字符外,第一個數(shù)字不能是0(整數(shù)0除外)。例如: +12,-25,0,1289 “+”號可以省略。 八進制整數(shù):由數(shù)字07數(shù)字組成,且以0開頭。例如:012。 十六進制整數(shù):以0X(x)開頭,由數(shù)字09和字母a(A)f(F)組成。例如: 0 x1abCD,0X02a5,0 xABCFD213,整型常量,整型常量可用后綴來修飾: 以L或l后綴修飾的整數(shù)為長整數(shù)。例如: 2L,023l,0X25678983L 以U或u后綴修飾的整數(shù)為無符號整數(shù)。例如: 6U
9、,045U,0XF91789U 后綴U(u)和L(l)可以組合使用,表示無符號長整型數(shù)。例如:0XFFFFFF96LU,120000UL 若整型常量未明確指定為長整型或無符號整型,其類型由編譯系統(tǒng)在編譯時依據(jù)它的取值自動指定。,實型常量,實型常量(或稱浮點常量),有兩種形式: 十進制數(shù)形式:由數(shù)字09和小數(shù)點組成。如: 0.1234,253.6,0.0,.205,-78. 指數(shù)形式(科學表示法):以10的指數(shù)形式表示。如: 12.3E12,0.2333e-12 第一個數(shù)為12.31012,第二個數(shù)為0.233310-12。 注意,在E或e的前面必須有數(shù)字,且在E或e之后的指數(shù)部分必須是整數(shù)。例
10、如:e10,E5,.e5,1.0e3.5 都是不合法的實數(shù)。,實型常量,浮點常量可用后綴來修飾: 帶后綴f或F的浮點常量是單精度浮點數(shù)(float型) 帶后綴d、D或無后綴的浮點常量是雙精度浮點數(shù)(double型) 帶后綴l、L結(jié)尾的浮點常量是長雙精度浮點數(shù)(long double型)。 帶后綴浮點常量舉例: 0.12f,12.3E12f,0.12D,0.12, 12.3E12,3.5L,12.3E12L 前兩個為單精度浮點數(shù),第三第五個為雙精度浮點數(shù),最后兩個是長雙精度浮點數(shù)。,字符型常量,字符型常量:用單引號括起來的單個字符。 字符型常量在計算機內(nèi)是采用該字符的ASCII編碼值來表示的,其
11、數(shù)據(jù)類型為char型。 合法的字符型常量舉例: a ,A, ,1 , , 用編譯預處理命令。定義格式: #define 標識符常量舉例: const double pi=3.1415926; #define PI 3.1415926 #define NTU NanTong University,標識符常量,使用標識符常量優(yōu)點: 提高程序的可讀性。若為標識符常量取一個有意義的名字,將會提高它在程序中的可讀性。 提高程序?qū)ΤA渴褂玫囊恢滦?。例如,使用圓周率時,可能在一處寫成3.14,而在另一處寫成3.1415,導致運算的精度不一致。 增強程序的易維護性。若要調(diào)整程序中某個常量的值,對于字面常量來說
12、,則要修改多處,還可能遺漏;對于標識符常量來說,只需在定義處修改。,變量,變量:在程序執(zhí)行過程中其值可以被改變的量。 變量三要素: 變量名 變量類型 變量的值 變量須先定義后使用。 取變量的值稱為對變量的引用。 對變量賦值與引用統(tǒng)稱為對變量的操作或使用。,變量的定義,變量定義指明了變量的類型和變量名。 變量定義格式: ,變量名n; 類型名是變量的數(shù)據(jù)類型,可以是預定義數(shù)據(jù)類型,也可以是用戶自定義數(shù)據(jù)類型;變量名1、變量名2,變量名n為標識符。 舉例1: int n; 該語句定義(或稱聲明)了一個名字為n的整型變量。當程序執(zhí)行到這行代碼時,將為變量n分配4字節(jié)存儲空間。,變量的定義,舉例2:一行
13、可定義多個變量,變量間用逗號分隔。 int year,month,day; double x1,x2,x3; long sum,average,total; 注意: 變量定義是語句,因此變量定義可出現(xiàn)在程序中語句可出現(xiàn)的任何位置。但從程序可讀性方面考慮,變量定義最好放在可執(zhí)行語句之前。 同一變量只能做一次定義,即不能重復定義。 變量名應盡可能簡短,并便于觀其名知其意。,變量賦初值,通常,在首次使用變量時,變量應有確定的值。變量的這個取值稱為變量的初值。 變量賦初值的方法: 在定義變量時,直接初始化。例如: int n=3; /n為整型,初值為3 float x=12.5f;/x為單精度實型,初
14、值為12.5f char c=U; /c為字符型,初值為字符U int a,b,c=18; /可只對一部分變量賦初值 int i(2); /i為整型,初值為2 float y(1.5f);/y為float型,初值為1.5f,變量賦初值,在定義變量后,用賦值語句賦初值。例如: float pi,y; pi=3.14159f; /使變量pi的取值為3.14159f y=2.71828f; /使變量y的取值為2.71828f 當然,變量的初值不一定是常量,也可以是含有變量的相應類型的表達式。例如: int a=0,b=a+1; 變量定義后,若未指定初值,則其初值取決于所分配的存儲器類型,或用默認值0
15、或用隨機值初始化。,3.3 運算符與表達式,運算符(也稱操作符):描述對數(shù)據(jù)的操作。 操作數(shù):運算符操作的數(shù)據(jù),可為常量和變量,也可為其他操作符的運算結(jié)果。例如A+B,稱A和B為操作數(shù),而把字符“+”稱為加法運算符。 運算符按功能分:算術(shù)運算符、賦值運算符、關(guān)系運算符、邏輯運算符和位運算符等。 運算符按操作數(shù)的個數(shù)分:一元(目)運算符、二元(目)運算符和三元(目)運算符。 運算符的優(yōu)先級:運算符的運算優(yōu)先關(guān)系。,運算符的結(jié)合性,若運算符優(yōu)先級相同,則其運算順序由運算符的結(jié)合性確定。 右結(jié)合:一個運算符對其操作數(shù)按從左到右的順序執(zhí)行所規(guī)定的運算。例如: 18-36 先取18,再取36,然后做減法
16、運算。 左結(jié)合:一個運算符對其操作數(shù)按從右到左的順序執(zhí)行所規(guī)定的運算。例如: A-=3 先取3,再取變量A的值,兩者作減法運算后,將結(jié)果賦給變量A。,運算符的目數(shù),一元(目)運算符:一個運算符只能對一個操作數(shù)進行操作。例如,-5中的負號運算符。 二元(目)運算符:一個運算符要求兩個操作數(shù)。例如,5*10中的運算符“*” 三元(目)運算符:一個運算符要求三個操作數(shù)。例如,條件運算符“?:”是唯一的三元運算符。 同一運算符因操作數(shù)的個數(shù)不同,完成不同運算。例如,一元運算符“*”用于取變量,二元運算符“*”用于乘法運算等。,表達式,表達式:由運算符、園括號和操作數(shù)構(gòu)成的合法式子,經(jīng)過運算應有一個某種
17、類型的確定的值。 操作數(shù)可以是常量、變量或函數(shù)等。 使用不同的運算符可以構(gòu)成不同類型的表達式,如算術(shù)表達式、賦值表達式、關(guān)系表達式、邏輯表達式等。 表達式書寫:操作數(shù)、運算符、圓括號之間可以加空格,也可以不加空格。,算術(shù)運算符,算術(shù)運算符:-(負號)、+(正號)、+(加),-(減),*(乘),/(除),%(取余)。 正、負號運算符的優(yōu)先級相同,左結(jié)合。 “*”、“/”、“%”優(yōu)先級相同,右結(jié)合。 加、減運算符的優(yōu)先級相同,右結(jié)合。 優(yōu)先級順序: 正、負號 高于 “*”、“/”、“%” 高于 加、減 可用圓括號改變運算符的優(yōu)先順序,先計算圓括號內(nèi)的值,再計算圓括號外的值。,算術(shù)運算符,除法運算符
18、:若兩邊的操作數(shù)均為整數(shù)時,則做整除運算,即只取運算結(jié)果的整數(shù)部分。例如: 3/4 結(jié)果為0 3.0/4 結(jié)果為0.75 %(取余):計算兩個整型操作數(shù)相除的余數(shù)。所得余數(shù)的符號與左操作數(shù)相同。例如: 10%3 結(jié)果為1 -10%3 結(jié)果為-1 4%-3 結(jié)果為1,算術(shù)運算的溢出,算術(shù)運算的溢出:超出對應類型數(shù)據(jù)的表示范圍。 除法運算:若除數(shù)為0或?qū)崝?shù)運算的結(jié)果溢出,則系統(tǒng)認為產(chǎn)生了一個嚴重錯誤,將終止程序的執(zhí)行。 整數(shù)的加、減或乘運算:若結(jié)果產(chǎn)生溢出并不認為是一個錯誤,但結(jié)果已不正確。例如: int n=60000; coutn*nendl; 輸出結(jié)果為:-694967296,顯然是錯誤的。
19、此類問題可通過改變變量的類型來解決。,算術(shù)表達式,算術(shù)表達式:由算術(shù)運算符、圓括號和操作數(shù)構(gòu)成的、符合C+語法規(guī)則的式子。 算術(shù)表達式舉例。設(shè)有說明:“int a=25,b=4,c=3;”,求下列表達式的值。 a+b*c:因運算符“*”的優(yōu)先級比“+”的高,故應先做乘法運算,再做加法運算,表達式的值為37。 a*-b:因負號運算符“-”的優(yōu)先級比“*”的高,并且“-”的結(jié)合性為左結(jié)合的,故先對b求負運算,然后再作乘法運算,表達式的值為-100。 a*- -b:注意,兩個負號之間有空格,上述表達式等同于a*(-(-b),表達式的值為100。,算術(shù)表達式,使用算術(shù)表達式時應注意: 表達式應簡潔明了
20、,沒有多余的運算符。如上面的表達式a*- -b應寫成a*b。 求值時,表達式中的每個變量都應有確定的值。 C+的運算符較多,其優(yōu)先級和結(jié)合性較復雜,在書寫比較復雜的表達式而又忘記了運算符的優(yōu)先級時,可適當增加配對的圓括號,明確指定表達式的求值順序。,+和運算符,+(增1)和-(減1)運算符:一元運算符,可放在變量的前面(前置),也可放在變量的后面(后置),用于快速實現(xiàn)變量的增1和減1操作。變量的類型可以是字符型、整型、實型、枚舉類型和指針類型。 前置的+(或-)表示先將變量的值增1(或減1),再把變量的值參加運算;后置的+(或-)表示先把變量的值參加運算,然后再將變量的值增1(或減1)。,+和
21、運算舉例,設(shè)int a=1; float x=7,y; a+ /或+a,等價于a=a+1。a的值為2。 即“+”或“-”運算符僅用于使某個變量的值增1或減1,前置和后置的作用是一樣的。 y=x+ + +a 則y的值為9,x的值為8,a的值都為2。 即“+”或“-”與其他運算符同時出現(xiàn)在表達式中時,前置與后置的作用是不同的。,+和運算符使用說明,+和-運算符只能用于變量。例如,a+、(b=1)+等都是正確的,而19、(x+6)+都是錯誤的。 若出現(xiàn)多個“+”或“-”連寫的情況,編譯器則將前兩個作為增1運算符或減1運算符。例如,“c=a+b;”等價于“c=a+ +b;”而不等價于“c=a+ +b;
22、”。,賦值運算符與賦值表達式,賦值運算符:左結(jié)合的雙目運算符,其優(yōu)先級比算術(shù)運算符、關(guān)系運算符和邏輯運算符的優(yōu)先級低。 賦值表達式: = 作用:將的值賦給。 舉例。設(shè)a、b均為整型變量: a=3+5 將3+5的值8賦給a b=a=3+5 將3+5的值8賦給a,再將a賦給b a=5+b=5 錯:將5賦給5+b,而5+b不是變量 a=5+(b=5) b為5,a為10,賦值運算符使用注意,不同編譯器對賦值表達式的值的不同處理,可能使同一表達式在不同編譯器中的運行結(jié)果不同。如: int x,s; s=(x=2)+(+x); 在VC+ 6.0中,s的值為6,而在Dev C+ 4.9中,s的值為5。而上述
23、代碼寫成: int x=2,s; s=x+(+x); 在VC+ 6.0和Dev C+ 4.9中,s的值均為6。 解決方法:對表達式進行分解。,復合賦值運算符,復合賦值運算符:二元算術(shù)運算符和位運算符與賦值運算符組合而成,優(yōu)先級和結(jié)合性與賦值運算符相同。共有10個: +=、-=、*=、/=、%=、=、 float x; 則 x=a/b x為3.0f x=(float)a/b x為3.5f x=float(a)/b x為3.5f x=(float)(a/b) x為3.0f x=float(a/b) x為3.0f,強制類型轉(zhuǎn)換,在計算表達式的值時,對于系統(tǒng)能正確自動轉(zhuǎn)換的數(shù)據(jù)類型,則不必做強制類型轉(zhuǎn)
24、換。例如3+float(4*5.0)中,用float做強制類型轉(zhuǎn)換就是多余的。 如果不做強制類型轉(zhuǎn)換會影響表達式求值的精度或不能完成相應的運算時,才須使用強制類型運算。例如:(int)13.5%(int)3.5。因13.5和3.5都是實數(shù),而取余運算符要求兩邊的操作數(shù)都是整型數(shù),這時當然必須使用強制類型運算符。,關(guān)系運算符,關(guān)系運算符:二元運算符,用來比較兩個操作數(shù)之間的關(guān)系。共有六個: 、=、=、!= 其中前四個關(guān)系運算符的優(yōu)先級相同,后兩個關(guān)系運算符的優(yōu)先級相同,但前四個關(guān)系運算符的優(yōu)先級高于后兩個。關(guān)系運算符的優(yōu)先級比算術(shù)運算符低,但比賦值運算符高。 關(guān)系運算符的操作數(shù)類型可以是字符型、
25、整型、實型、枚舉類型以及指針類型。 注意:初學者常常誤將=當作=使用。,關(guān)系表達式,關(guān)系表達式:用關(guān)系運算符將操作數(shù)連接起來的式子。關(guān)系表達式的值為整數(shù)0或1。關(guān)系成立時,結(jié)果為1;否則,結(jié)果為0。例如,表達式(1bc的含義并不是a大于b且b大于c,而是(ab)c,即先求出ab的值(為0或1),并使運算的結(jié)果繼續(xù)參加后面的運算。例如,關(guān)系表達式432的結(jié)果為0,因為它等價于(43)2。,邏輯運算符,邏輯運算符:用于邏輯運算,用于復雜條件的表示。有三種: ! 邏輯非(單目運算符) a 則表達式 a+=2,b=3+a 的值為7。此時,a的值為4,b的值為7。,條件運算符與條件表達式,條件運算符:唯一的三目運算符。 條件表達式: ?: 條件表達式的運算過程:先求表達式1的值,若不為0,則求出表達式2的值(不求表達式3的值),并把該值作為運算結(jié)果;否則求出表達式3的值(不求表達式2的值),并把它作為運算結(jié)果。 舉例: a=b?a:b 求a、b兩個數(shù)中的大數(shù) coutb?a大于bn:a小于等于bn);,sizeof運算符,sizeof運算符:單目運算符,用于計算操作數(shù)類型或表達式的值占用內(nèi)存的字節(jié)數(shù)。格式為: sizeof() 舉例: sizeof(int) /4(在32位系統(tǒng)中) sizeof(float) /4 sizeof(100) /1 sizeof(a+2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色農(nóng)業(yè)的科技創(chuàng)新與實踐
- 二零二五年度水資源保護堰塘承包管理合同3篇
- 二零二五年度高速鐵路軌道施工合同3篇
- 2025年度文化藝術(shù)館軟裝承接合同樣本4篇
- 二零二五年度車庫停車場智能停車引導系統(tǒng)采購合同4篇
- 二零二五年度成都高空廣告安裝公司高空作業(yè)防護用品供應合同2篇
- 校企合作在寵物人才培養(yǎng)中的實踐與探索
- 學?;顒映晒?zhí)行的全方位策略
- 2025年統(tǒng)編版2024選修化學下冊階段測試試卷含答案
- 二零二五年度航空航天財產(chǎn)抵押擔保租賃合同3篇
- 溫泉規(guī)劃工作方案
- 《三國演義》中的語言藝術(shù):詩詞歌賦的應用
- 腸外營養(yǎng)液的合理配制
- 消防安全教育培訓記錄表
- 2023年河南省新鄉(xiāng)市鳳泉區(qū)事業(yè)單位招聘53人高頻考點題庫(共500題含答案解析)模擬練習試卷
- 2023年小升初簡歷下載
- 廣府文化的奇葩
- 公路工程標準施工招標文件(2018年版)解析
- 七年級地理下冊期末試卷(人教版)
- C語言程序設(shè)計期末考試試題(含答案)
- 《自動化專業(yè)導論》課程教學大綱
評論
0/150
提交評論