C++第二章-基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt_第1頁
C++第二章-基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt_第2頁
C++第二章-基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt_第3頁
C++第二章-基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt_第4頁
C++第二章-基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第二章 基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,2.1 數(shù)據(jù)類型 2.2 變量和常量 2.3 運(yùn)算符和表達(dá)式 2.4 指針 2.5 typedef語句 2.6 應(yīng)用舉例,2,2.1 數(shù)據(jù)類型,程序中要對(duì)各種各樣的數(shù)據(jù)進(jìn)行描述和操作,用到的數(shù)據(jù)都必須指明其類型。數(shù)據(jù)類型的作用: 指出了應(yīng)為數(shù)據(jù)分配的存儲(chǔ)空間的大小 規(guī)定了數(shù)據(jù)所能進(jìn)行的操作,p23,3,2.2 變量和常量,1.變量的定義 程序運(yùn)行過程中其值可變的量, 定義方式如下: C/C+規(guī)定: 程序中所有變量必須先定義后使用,可及時(shí)發(fā)現(xiàn)錄入錯(cuò)誤(如,定義的變量為data,而程序體中使用變量為date),同時(shí)還可限制非法運(yùn)算(如:a%b , 若a,b

2、為float類型則出錯(cuò))。,C+中變量可隨時(shí)使用,隨時(shí)定義。,例如: int a, b; (定義變量a和b為整型) float x,y ; (定義變量x和y為單精度實(shí)型),數(shù)據(jù)類型 變量名表 ;,2.2.1 變量,4,2.變量的初始化 變量必須先有確定的值后才能參與各種相應(yīng)的操作,變量獲取值的途徑有三: 通過輸入語句輸入 (如:cina;) 通過賦值語句賦值 (如:a=3;) 通過初始化方式賦初值 (如:int k=3;) 所謂初始化是指在定義變量的同時(shí)指定變量的初值,形式有二: 例如: int k=3,m=3, n(3); ()int k=m=n=3;/不允許為多個(gè)變量同時(shí)初始化,數(shù)據(jù)類型

3、變量名=表達(dá)式; 數(shù)據(jù)類型 變量名(表達(dá)式);,5,3.變量引用,C+中增加了“引用”這一概念,許多地方可以代替指針實(shí)現(xiàn)相應(yīng)的功能,比指針更安全。 所謂引用即給一個(gè)已知變量起個(gè)別名,系統(tǒng)不為引用另外開辟內(nèi)存,而是與原變量共享同一段內(nèi)存,引用好比是一個(gè)虛擬的變量,聲明形式為:,數(shù)據(jù)類型 cout a;,9,4. 字符串常量 字符串常量是用雙引號(hào)括起來的字符序列, 系統(tǒng)在字符串常量最后自動(dòng)加字符串結(jié)束符號(hào) 0 。 例如: 字符串“A”的存儲(chǔ)形式: 字符A的存儲(chǔ)形式: 5. 符號(hào)常量 是以標(biāo)識(shí)符形式出現(xiàn)的常量,作用是便于程序閱讀和修改。C+中用define命令或關(guān)鍵字const定義符號(hào)常量,形式如下

4、:,A 0,A,內(nèi)存中實(shí)際存放的是這些字符的ASCII碼,#define 標(biāo)識(shí)符 常量值 const 數(shù)據(jù)類型 標(biāo)識(shí)符 = 常量值;,或:,10,注意:,習(xí)慣上符號(hào)常量名大寫,而變量名小寫,以示區(qū)分。 符號(hào)常量雖然用標(biāo)識(shí)符來標(biāo)識(shí),但本質(zhì)上是常量,具有常量值不能改變的性質(zhì)。,#define PI 3.14 #include iostream.h void main( ) float r=3.0,s,l; l=2*PI*r; s=PI*r*r; coutl=l,s= sendl; ,例2-1,1.演示不同精度圓周率的程序運(yùn)行結(jié)果 2.觀察編譯中的“警告”對(duì)程序運(yùn)行的影響 3.消除“warning”

5、的方法,11,2.3 運(yùn)算符和表達(dá)式,2.3.1 基本概念,運(yùn)算符具有三個(gè)屬性: 優(yōu)先級(jí):指運(yùn)算的先后次序,共分15個(gè)級(jí)別。(見p27表1.2.4) 結(jié)合性:指相同優(yōu)先級(jí)運(yùn)算符連續(xù)出現(xiàn)時(shí)的計(jì)算順序,分自左 向右和自右向左兩種,除特別聲明外,皆指自左向右。 目 數(shù): 指運(yùn)算符要求的操作數(shù)的個(gè)數(shù),包括單目、雙目和三目,一般目數(shù)越少,優(yōu)先級(jí)越高。,表達(dá)式:由常量、變量、函數(shù)調(diào)用和運(yùn)算符按一定規(guī)律組合在一 起構(gòu)成的式子。 如: a+14/(3+2)-sqrt(17),12,2.3.2 運(yùn)算符 1.算術(shù)運(yùn)算,種類: +(加法或取正) -(減法或取負(fù)) *(乘法) /(除法) %(求余數(shù)) +(自增) -

6、(自減) 其中: +和-的結(jié)合性則是自右向左 優(yōu)先級(jí):(從高到低) (+、-、+、-) (*、/、%) (+、-),正、負(fù),加、減,13,說明: 在除法運(yùn)算中,當(dāng)兩個(gè)操作數(shù)都是整數(shù)時(shí),商也為整數(shù),小數(shù)部分一律舍去。如: 1/2 0 1.0 /2 0.5 %(求余運(yùn)算)要求兩個(gè)操作數(shù)都是整型,結(jié)果為整除后余下的整余數(shù)。 自增、自減運(yùn)算符(+、- -) +i , -i (在使用 i之前,先使i的值加減1) i+ , i- (在使用 i之后, 使i的值加減1),若 i 的值為3,則: j=+i; j的值為4, i的值為4 j=i+; j的值為3, i的值為4,注意: 自增、自減運(yùn)算符只能用于變量,而

7、不能用于常量和表達(dá)式。 () 5+、(a+b)+,14,華氏溫度轉(zhuǎn)換為攝氏溫度:c=5/9(F-32),#include iostream.h void main( ) float c,f; cinf; c=5/9 (f-32); cout攝氏: cendl; ,15,2 .關(guān)系運(yùn)算,種類: (大于) = =(等于)、 =(大于等于)、 !=(不等于) 優(yōu)先級(jí): (從高到低) ( 、 = ) ( = = 、 != ) 關(guān)系運(yùn)算描述的是一種“判斷關(guān)系”,其結(jié)果有“真(true)”和“假(false)”兩種。用“1”代表“真”,用 “0” 代表“假” 例如:53的結(jié)果為1, aB的結(jié)果為0 思考:

8、 x為0到100之間的數(shù)能否表示為 0=x=100?,16,對(duì)n(0)個(gè)人進(jìn)行分班,每班k(0)個(gè)人,最后不足k人也編一班,問要編幾個(gè)班?,n/k+(n%k0),17,3.邏輯運(yùn)算,種類: 表達(dá)式a+ m=2 ,例2-2,4. 條件運(yùn)算 形式: e1?e2:e3 一般而言,e1為條件表達(dá)式,當(dāng)其成立時(shí),將e2的值作為整個(gè)表達(dá)式的值,不再計(jì)算e3的值;否則取e3的值作為整個(gè)表達(dá)式的結(jié)果,而不計(jì)算e2的值。,20,如: max(xy?x:y); /將和中較大的一個(gè)數(shù)賦值給變量max 條件運(yùn)算符的結(jié)合性是由右向左 思考題: 對(duì)n(0)個(gè)人進(jìn)行分班,每班k(0)個(gè)人,最后不足k人也編一班,問要編幾個(gè)班

9、?(試用條件運(yùn)算符表達(dá)),5.賦值運(yùn)算 格式: 作用: 將一個(gè)數(shù)據(jù)賦給一個(gè)變量,并以變量的值作為整個(gè)式子的值。,變量 賦值運(yùn)算符 表達(dá)式,n%k!=0?n/k+1:n/k,21,其中賦值運(yùn)算符可以是 “=”,也可以是復(fù)合賦值運(yùn)算符,如“+=”、“-=”、“*=”、“/=”和“%=”等等。 復(fù)合賦值運(yùn)算符的等價(jià)形式: (以 “+=”為例) 例如: b /= a+2 等價(jià)于: b = b/(a+2) 結(jié)合性自右向左 若兩端類型不同,則系統(tǒng)自動(dòng)將右端類型轉(zhuǎn)換為左端類型。 例如:有定義 int a = 3.78; 則a中存放的值為3 左端只能是變量(或數(shù)組元素),不能為表達(dá)式或常量,如:a+2*=b

10、() a=b+2=c+5 (),變量+=表達(dá)式,變量 = 變量表達(dá)式,是一個(gè)整體,22,6. 逗號(hào)運(yùn)算 形式: e1,e2,e3, 各表達(dá)式的運(yùn)算次序:從左向右,而將最后一個(gè)表達(dá)式的值作為整個(gè)表達(dá)式的值。 for(i=0,j=n;ij;i+,j-) 逗號(hào)運(yùn)算符的優(yōu)先級(jí)別最低。,例如: a=3*5,a*4 整個(gè)逗號(hào)表達(dá)式的值為60 (a=3*5,a*4),a+5 整個(gè)逗號(hào)表達(dá)式的值為20,23,7 .數(shù)據(jù)類型的轉(zhuǎn)換 數(shù)據(jù)類型的轉(zhuǎn)換分為顯式(強(qiáng)制)轉(zhuǎn)換和隱式(自動(dòng))轉(zhuǎn)換。 強(qiáng)制轉(zhuǎn)換格式: 或: 將一種數(shù)據(jù)類型的值強(qiáng)制轉(zhuǎn)換為另外一種數(shù)據(jù)類型。常用于對(duì)函數(shù)的參數(shù)及返回值的操作。 假設(shè)、為float型數(shù)

11、據(jù),則(int)(x+y)強(qiáng)行將+的值轉(zhuǎn)換成整型,x和y仍為float型。 自動(dòng)轉(zhuǎn)換: 在不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換。,(類型名)表達(dá)式,類型名(表達(dá)式),24,char short int unsigned longunsigned longfloatdoublelong double,必定的轉(zhuǎn)換,混合運(yùn)算時(shí)由低向高轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換還包括賦值運(yùn)算時(shí)賦值號(hào)右端類型向左端類型的轉(zhuǎn)換,8.內(nèi)部函數(shù) C/C+中提供了多種內(nèi)部函數(shù)供用戶編程序時(shí)直接調(diào)用,只需把包含內(nèi)部函數(shù)的頭文件,通過#include 預(yù)處理命令裝入到程序中。例如,程序中要使用平方根函數(shù)sqrt,應(yīng)該在程序加入:

12、 #include math.h“,25,2.4 指針,1. 基本概念 每個(gè)變量在內(nèi)存中存放都對(duì)應(yīng)一段地址,第一個(gè)字節(jié)的地址就是變量的地址,將存放地址的變量稱為指針變量。, 指針?biāo)笇?duì)象的類型。 初始化 在定義的同時(shí)賦初值,稱為指針變量的初始化。 例如: float d =1.5, *p= /注意不能寫做*p= p=NULL; 指針的值為NULL(0) 表示不指向任何對(duì)象。 p=,3.運(yùn)算 賦值運(yùn)算,29,算術(shù)運(yùn)算 p+n (或p-n): p+n:指向后面的第個(gè)元素。 p-n:指向前面的第個(gè)元素。 p+n的值為:p的值n*sizeof(p指向的類型),如,有定義: int a,*p= 假設(shè)a的

13、地址為1000,則: p的值為1000 p+3的值為: 1000+3*sizeof(int)=1000+3*4=1012,30,自增(+)和自減(-) p+、 +p、 p-、 -p 自增或自減后p指向前一個(gè)或后一個(gè)元素 指針相減 兩個(gè)類型相同的指針可以相減,結(jié)果為這兩個(gè)地址差之間能夠存放的數(shù)據(jù)個(gè)數(shù)(數(shù)據(jù)類型為指針?biāo)傅念愋停?如,有定義: int *p1, *p2; 假設(shè)p1指向1000,p2指向1008, 則p2p1的值為: (1008-1000)/sizeof(int)=2,*p+ *(p+) *p p + (*p)+ *p (*p)+,31,4. new和delete new運(yùn)算符 形

14、式:,指針=new 數(shù)據(jù)類型; 指針=new 數(shù)據(jù)類型(初值);,或,32,delete運(yùn)算符 用于釋放用new申請(qǐng)的動(dòng)態(tài)存儲(chǔ)空間,形式為:,delete 指針; delete 指針;,或,無需指明數(shù)組長(zhǎng)度,只能釋放由new申請(qǐng)的動(dòng)態(tài)變量,例:,int a=3,*p=,33,2.5 typedef語句,形式:,typedef 數(shù)據(jù)類型 新的數(shù)據(jù)類型名;,該語句作用是為已有的數(shù)據(jù)類型定義新的名稱,使其更符合Windows系統(tǒng)中的相關(guān)對(duì)象的含義,可以像標(biāo)準(zhǔn)C+中的數(shù)據(jù)類型一樣使用這些新定義的類型。如: typedef char CHAR; CHAR c1; /等價(jià)于char c1;,34,2.6

15、應(yīng)用舉例 例2-3 用代碼表達(dá)下列命題: 1. 能且只能被和中的一個(gè)數(shù)整除。 解: 或 2. ch是大寫字母。 解: 思考上述命題可否描述為AchZ?為什么?,(m%3= =0) double l,s; coutca; b=sqrt(c*c-a*a);/sqrt為內(nèi)部函數(shù),對(duì)其的說明包含在頭文件math.h中 l=a+b+c; s=a*b/2; coutsetiosflags(ios:fixed); coutsetprecision(2); cout計(jì)算結(jié)果:endl; coutsetw(8)另一直角邊=bendl setw(11)周長(zhǎng)=lendl setw(11)面積=sendl; ,例2-4 編寫程序:要求輸入直角三角形的斜邊和一條直角邊,求三角形另外一條直角邊,周長(zhǎng)和面積,輸入 (已知),處理 (根據(jù)已知求未知),輸出 (結(jié)果),編程過程,程序:,37,#includeiostream.h #includemath.h #includeiomanip.h void main() int c1,c2,c3; char c4; int x;

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論