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

下載本文檔

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

文檔簡介

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

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

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

4、:,A 0,A,內(nèi)存中實際存放的是這些字符的ASCII碼,#define 標識符 常量值 const 數(shù)據(jù)類型 標識符 = 常量值;,或:,10,注意:,習慣上符號常量名大寫,而變量名小寫,以示區(qū)分。 符號常量雖然用標識符來標識,但本質(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.演示不同精度圓周率的程序運行結(jié)果 2.觀察編譯中的“警告”對程序運行的影響 3.消除“warning”

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

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

7、不能用于常量和表達式。 () 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ōu)先級: (從高到低) ( 、 = ) ( = = 、 != ) 關(guān)系運算描述的是一種“判斷關(guān)系”,其結(jié)果有“真(true)”和“假(false)”兩種。用“1”代表“真”,用 “0” 代表“假” 例如:53的結(jié)果為1, aB的結(jié)果為0 思考:

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

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

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

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

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

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

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

15、應用舉例 例2-3 用代碼表達下列命題: 1. 能且只能被和中的一個數(shù)整除。 解: 或 2. ch是大寫字母。 解: 思考上述命題可否描述為AchZ?為什么?,(m%3= =0) double l,s; coutca; b=sqrt(c*c-a*a);/sqrt為內(nèi)部函數(shù),對其的說明包含在頭文件math.h中 l=a+b+c; s=a*b/2; coutsetiosflags(ios:fixed); coutsetprecision(2); cout計算結(jié)果:endl; coutsetw(8)另一直角邊=bendl setw(11)周長=lendl setw(11)面積=sendl; ,例2-4 編寫程序:要求輸入直角三角形的斜邊和一條直角邊,求三角形另外一條直角邊,周長和面積,輸入 (已知),處理 (根據(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等.壓縮文件請下載最新的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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論