版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計中國高等院校計算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材譚浩強(qiáng)編著第2章數(shù)據(jù)類型和表達(dá)式2.1C++數(shù)據(jù)類型2.2常量2.3變量2.4C++運(yùn)算符2.5算術(shù)運(yùn)算符和表達(dá)式2.6賦值運(yùn)算符和表達(dá)式2.7逗號運(yùn)算符和表達(dá)式教學(xué)目標(biāo)熟悉C++語言的數(shù)據(jù)類型;能夠區(qū)分常量與變量的不同,掌握基本數(shù)據(jù)類型的常量與變量的定義、使用;熟悉常用的運(yùn)算符,能夠根據(jù)要求構(gòu)造相應(yīng)的表達(dá)式。重點(diǎn):基本數(shù)據(jù)類型、常量與變量、常用的運(yùn)算符難點(diǎn):不同數(shù)據(jù)類型的差異、常量與變量的區(qū)別、部分運(yùn)算符的功能與優(yōu)先級第2章數(shù)據(jù)類型和表達(dá)式2.1C++數(shù)據(jù)類型2.2常量2.3變量2.4C++運(yùn)算符2.5算術(shù)運(yùn)算符和表達(dá)式2.6賦值運(yùn)算符和表達(dá)式2.7逗號運(yùn)算符和表達(dá)式2.1.C++的數(shù)據(jù)類型
數(shù)據(jù)是計算機(jī)處理的對象,是以某種特定形式存在的(整型、浮點(diǎn)等形式)。
例如:
從上我們可以得到數(shù)據(jù):姓名、國籍、民族,年齡:23歲,身高:1.91m,體重:91.0kg,…它們具有不同的性質(zhì):字符串有標(biāo)識作用,數(shù)值型可計算,還有精度差異。編寫程序時,需區(qū)別對待中文名:林書豪英文名:JeremyShu-HowLin國籍:美國民族:漢族出生日期:1988.8.23畢業(yè)院校:哈佛大學(xué)經(jīng)濟(jì)系身高:1.91m體重:91kg什么是數(shù)據(jù)掌握數(shù)據(jù)類型的目的程序運(yùn)行時所處理的數(shù)據(jù)需要存儲在內(nèi)存中,不同性質(zhì)的數(shù)據(jù)所占用存儲空間的多少、數(shù)值范圍及可進(jìn)行的操作也不同;所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式不同的類型分配不同的長度和存儲形式數(shù)據(jù)在計算機(jī)中的存儲是以字節(jié)為單位計算的,一個字節(jié)是8位。例如:整數(shù)10的用2字節(jié)表示的示圖:單精度型(float)雙精度型(double)數(shù)據(jù)類型基本類型整型字符型(char)浮點(diǎn)型派生類型指針類型(*)數(shù)組類型([])結(jié)構(gòu)體類型(struct)共用體類型(union)類類型空類型(void)枚舉類型(enum)整型(int)短整型(shortint)長整型(longint)C++的數(shù)據(jù)類型掌握數(shù)據(jù)類型的關(guān)鍵數(shù)據(jù)類型情況重點(diǎn)掌握類型類型標(biāo)識符(關(guān)鍵字)、所占字節(jié)數(shù)、表示的數(shù)值范圍。下表是VC的基本數(shù)據(jù)類型:C++語言還允許在基本數(shù)據(jù)類型(除void類型外)前加上類型修飾符,更具體地表示數(shù)據(jù)類型。C語言的類型修飾符包括:signed(有符號)
unsigned(無符號)short(短型)long(長型(1)整型數(shù)據(jù)基本整型(int):不同編譯系統(tǒng)或計算機(jī)系統(tǒng)中所占用的字節(jié)不同,通常為2字節(jié)(TC)或4字節(jié)(VC)在VC中,占4字節(jié)(32位), 范圍:-2147483648~2147483647存儲方式:以二進(jìn)制補(bǔ)碼形式存放數(shù)據(jù)(以VC系統(tǒng)為例)問題:最小整數(shù)-231的存儲形式是什么?000011000000000000000000000000001211110100111111111111111111111111-12231-1(最大整數(shù))11111111111111111111111101111111(1)整型數(shù)據(jù)(續(xù))短整型(shortint):為2字節(jié),范圍:-32768~32767(即215-1)長整型(longint):為4字節(jié),范圍:-2147483648~2147483647(即-231~231-1)雙長整型(long
longint):一般分配8字節(jié),是C99新增類型,許多編譯系統(tǒng)尚未實(shí)現(xiàn)??捎茫簊izeof(類型名或數(shù)據(jù))
來獲取該類型數(shù)據(jù)所占字節(jié)數(shù)。(注:Sizeof是運(yùn)算符,不是函數(shù))雖然在不同系統(tǒng)中,同一數(shù)據(jù)類型所占用字節(jié)存在著差異,但同一系統(tǒng)不同數(shù)據(jù)類型的長度有明確的大小關(guān)系,即:sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(lomglong)例1:使用sizeof運(yùn)算符獲取數(shù)據(jù)、類型的所占字節(jié)數(shù)#include<iostream>usingnamespacestd;intmain(){cout<<"int型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(int)<<"\n";cout<<"shortint型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(shortint)<<"\n";cout<<"longint型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(longint)<<"\n";cout<<"整數(shù)2345所占字節(jié)數(shù):"<<sizeof(2345)<<"\n"; return0;}(1)整型數(shù)據(jù)(續(xù))可在整型前加unsigned來定義無符號整數(shù),例如:unsignedint、
unsignedshortint、unsignedlongint、unsignedlonglongint,由于最高位不再用來存放整數(shù)的符號,因此,可表示整數(shù)的范圍擴(kuò)大一倍:(以VC系統(tǒng)為例)unsignedshortint:0~65535(即216-1)unsignedint:0~4294967295(即232-1)unsignedlongint:0~4294967295(即232-1)unsignedlonglongint:0~264-1說明:只有整型(包括字符型)可加unsigned或signed,實(shí)數(shù)不允許;若將一個負(fù)數(shù)賦值給一個無符號變量,將得到錯誤結(jié)果,見p47(2)字符型數(shù)據(jù)(由一個字符組成)字符是按其代碼(整數(shù))形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點(diǎn)字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9專門符號:29個:!”#&‘()*等空格符:空格、水平制表符、換行等不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等(2)字符型數(shù)據(jù)(續(xù))字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個形狀為’1’的符號,在需要時按原樣輸出,在內(nèi)存中以ASCII碼形式存儲,占1個字節(jié)(在所有系統(tǒng)中)整數(shù)1是以整數(shù)存儲方式(二進(jìn)制補(bǔ)碼方式)存儲的,TC系統(tǒng)占2個字節(jié),VC系統(tǒng)4個字節(jié),例如:00000001000000000000000000000000字符型的定義與輸出:用char定義字符變量,例如:
charc=’?’;//系統(tǒng)把“?”的ASCII代碼63賦給變量c可用強(qiáng)制轉(zhuǎn)換方式控制字符的輸出00110001(3)浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)是用來表示具有小數(shù)點(diǎn)的實(shí)數(shù)在C語言中,實(shí)數(shù)是以指數(shù)形式存放在內(nèi)存存儲單位中的小數(shù)部分指數(shù)數(shù)符以圓周率PI的近似值3.14159為例,可寫成:3.14159x100、0.314159x101、0.0314159x102、31.4159x10-1等形式。由于小數(shù)點(diǎn)位置可以浮動,故稱為浮點(diǎn)數(shù)。規(guī)格化指數(shù)形式:小數(shù)點(diǎn)前數(shù)字為0、小數(shù)點(diǎn)的第1位數(shù)字非0 對于一個實(shí)數(shù)來說,其規(guī)格化指數(shù)形式只有一種,例如: 0.314159x101符合要求,0.0314159x102、31.4159x10-1等則不符合要求指數(shù)表示了數(shù)據(jù)的大小,尾數(shù)表示了數(shù)據(jù)的精度。通常用e或E后面帶整數(shù)表示10的多少次方。2.2常量概念:在程序運(yùn)行過程中,其值不能被改變的量 包括:整型常量、實(shí)型常量、字符常量和字符串常量等如12,0,-3為整型常量4.6,-1.23為實(shí)型常量,包含在兩個單撇號之間的字符為字符常量,如′a′,′x′。
2.2.1什么是常量?2.2.2數(shù)值常量整型常量:在整數(shù)末尾使用u和l字母:若后綴有字母u(大、小寫等效),則硬性規(guī)定它為一個無符號整型(unsignedint)數(shù);若后綴有字母l(大、小寫等效),則硬性規(guī)定它為一個長整型(longint)數(shù);在一個整數(shù)的末尾,可以同時使用u和l,并且對排列無要求。如25U,0327UL,0x3ffbL,648LU等都是整數(shù)。十進(jìn)制整數(shù):由正號(+)或負(fù)號(-)開始的、接著為首位非0的若干個十進(jìn)制數(shù)字所組成。如38,-25,+120,74286等八進(jìn)制整數(shù):由首位數(shù)字為0的后接若干個八進(jìn)制數(shù)字(借用十進(jìn)制數(shù)字中的0-7)所組成。八進(jìn)制整數(shù)不帶符號位,隱含為正數(shù)。如0,012,0377,04056等等十六進(jìn)制整數(shù):由數(shù)字0和字母x(大、小寫均可)開始的、后接若干個十六進(jìn)制數(shù)字(0-9,A-F或a-f)所組成。同八進(jìn)制整數(shù)一樣,十六進(jìn)制整數(shù)也均為正數(shù)。如0x0,0X25,0x1ff,0x30CA等2.2.2數(shù)值常量2)浮點(diǎn)常量:格式:有兩種小數(shù)形式:1.23,0.23,-999.34,3.14159,…指數(shù)形式:1.23e5,2.3e-1,-0.999E3,…
(注:e或E均可,e前是小數(shù),e后是整數(shù))通常,浮點(diǎn)數(shù)當(dāng)作double型看待??稍谖膊考觙或F指定為float型2.2.2字符常量1)普通的字符常量:用一對單引號括起來的一個字符,形式為:‘單字符’,如:’a’,’%’,’A’等,區(qū)分大小寫 注意:’ab’是錯誤的,為什么?2)轉(zhuǎn)義字符常量:格式:\特定字符性質(zhì):改變原先字符的含義,實(shí)現(xiàn)特定功能 例如:\n(換行功能),\t(下一制表位)還允許用反斜線引導(dǎo)一個具有1至3位的八進(jìn)制整數(shù)(形式:’\ddd’)或一個以字母x作為開始標(biāo)記的具有1至2位的十六進(jìn)制整數(shù)(形式:’\xhh’),對應(yīng)的字符就是以這個整數(shù)作為ASCII碼的字符 例如:\101、\x41均表示ASCII為65的字符,即‘A’常用的轉(zhuǎn)義字符:轉(zhuǎn)義字符含義ASCII碼值(十進(jìn)制)\a響鈴(bell)7\b退格(backspace)8\n換行(newline)10\r回車(carriagereturn)13\t水平制表(horizontaltab)9\v垂直制表(verticaltab)11\\反斜杠92\’單引號39\”雙引號34\0空格符(null)0\ddd任意字符3位八進(jìn)制數(shù)\xhh任意字符2位十六進(jìn)制數(shù)3)字符數(shù)據(jù)在內(nèi)存中的存儲形式相關(guān)知識:字符數(shù)據(jù)存放在內(nèi)存的是其ASCII碼,可與當(dāng)作整數(shù)處理;熟悉常用字符的ASCII(十進(jìn)制數(shù)):A~Z(65~90),a~z(97~122),0~9(48~57),空格(32),null(0)等#include<iostream>usingnamespacestd;intmain(){ inti,j; i='A'; j='B'; cout<<i<<""<<j<<'\n'; return0;}例3將字符賦給整型變量#include<iostream>usingnamespacestd;intmain(){ charc1,c2; c1='A'; c2='B'; c1=c1+32; c2=c2+32;cout<<c1<<""<<c2<<endl; return0;}例4字符數(shù)據(jù)與整數(shù)進(jìn)行算術(shù)運(yùn)算4)字符串常量:格式:“…”,即:用一對雙引號括起來的字符序列(字符個數(shù)可以0、1或多個,也可以是轉(zhuǎn)義字符),起標(biāo)識、提示作用。字符串以雙引號為定界符,雙引號不作為字符串的一部分。如:“Hello”,“GoodMorning!”,“廣州大學(xué)”…長度:字符串的字符數(shù)。如:“Hello”的長度為5.存儲:在內(nèi)存中占一串連續(xù)的存儲單元,系統(tǒng)自動在字符串的末尾加以字符串結(jié)束標(biāo)志,即轉(zhuǎn)義字符‘\0’。 Hello‘\0’特別注意:“字符串”與“字符型數(shù)據(jù)”是兩個完全不同的概念,它們在定界符、字符個數(shù)、結(jié)束標(biāo)識上不同(以后講解)占6個存儲單元問題:分辨哪些是字符常量?哪些是字符串?
“sise”、”?”、””、‘!’、‘\x20’、“”5)怎樣確定常量的類型?字符常量:由單撇號(‘’)括起來的單個字符或轉(zhuǎn)義字符字符串常量:由雙撇號(“”)括起來的單個字符或轉(zhuǎn)義字符整型常量:不帶小數(shù)點(diǎn)的數(shù)值,系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點(diǎn)型常量:凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實(shí)數(shù)24格式:#define符號常量 例如:#definenum50處理:編譯前,預(yù)處理器將所此符號置換成常量。由此可知,符號常量不同于變量,不占用內(nèi)存空間好處:做到“一改全改”2.2.4符號常量2.2常量例2輸入圓的半徑,輸出其周長、面積
解題思路:
圓的半徑用cout<<"輸入,再用公式計算其周長、面積圓的周長、面積計算都要用PI,可用符號常量表示#include<iostream>usingnamespacestd;#definePI3.14159intmain(){ floatr,c,s; cout<<"請輸入圓的半徑:“; cin>>r; c=2*PI*r; s=PI*r*r; cout<<s;return0;}思考題:請用常變量方法修改此程序,功能不變2.3.1什么是變量:在程序運(yùn)行過程中,其值可以被改變的量。2.3變量2.3.2變量命名規(guī)則
(1)標(biāo)識符在C語言中,有許多符號需要命名,如:變量名、函數(shù)名、數(shù)組名等,這些符號稱為標(biāo)識符。inta=3;標(biāo)識符的命名規(guī)則:由字母、數(shù)字、下劃線組成,并且第一個字符必須為字母或下劃線。合法標(biāo)識符:area、PI、a_array、price等非法標(biāo)識符:456p、cade-y、x.y、a&b等不同的C++語言編譯系統(tǒng)所規(guī)定的標(biāo)識符長度可能不同建議:命名時最好“見名知意”,多采用單詞、拼音、下劃線等標(biāo)識符有三類:關(guān)鍵字:C語言預(yù)先規(guī)定的一批有固定含義的標(biāo)識符,不能另作他用autodouble
int
structcase else long switchbreakenum
register
typedefchar
extern
return
unionconst
float
short
unsignedcontinue
for
signed
voiddefault
goto
sizeof
volatiledo
if
static
while等
預(yù)定義標(biāo)識符:C語言預(yù)先定義并有特定含義的標(biāo)識符,如:預(yù)處理命令(define)。不建議另作他用用戶標(biāo)識符:用戶定義的標(biāo)識符,如:變量名、函數(shù)名、數(shù)組名等,最好“見名知意”變量定義:數(shù)據(jù)類型變量名1[,變量名2,…]; 實(shí)質(zhì):在編譯時為其分配相應(yīng)的存儲單元 例如:inta,b,c;floatr;doubleroot1,root2;說明:變量定義時,都有一個確定的數(shù)據(jù)類型,這樣才能分配存儲單元;C語言規(guī)定,變量要“先定義,后使用”,編譯時系統(tǒng)進(jìn)行檢查。例如,如果在定義時為intstudent;而在執(zhí)行語句中錯寫成statent編譯時就會輸出“變量statent未經(jīng)聲明”的信息變量定義后,如果未賦值,則其值是不確定的。應(yīng)避免這種情況的出現(xiàn)變量初始化:數(shù)據(jù)類型變量名1=初值[,變量名2=初值,…];
功能:將變量定義、賦值“合二為一”2.3.3定義變量2.3.4為變量賦初值定義變量時對它賦予一個初值,這稱為變量初始化。初值可以是常量,也可以是一個有確定值的表達(dá)式。如floata,b=5.78*3.5,c=2*sin(2.0);2.3.5常變量在定義變量時,如果加上關(guān)鍵字const,則變量的值在程序運(yùn)行期間不能改變,這種變量稱為常變量(constantvariable)。例如,constinta=3;2.4C++的運(yùn)算符運(yùn)算符(操作符):是對數(shù)據(jù)進(jìn)行運(yùn)算的符號操作數(shù)(運(yùn)算對象):參與運(yùn)算的數(shù)據(jù)表達(dá)式:由操作數(shù)和操作符連接而成的有效的式子。表達(dá)式可以嵌套,例如:2+3+(5*sizeof(int))/4(1)一些概念運(yùn)算符分類:(按操作數(shù)個數(shù)的多少劃分)單目運(yùn)算符:一般位于操作數(shù)的前面,如:正負(fù)號(+、-)雙目運(yùn)算符:運(yùn)算符一般位于兩個操作數(shù)之間,如:a+b三目運(yùn)算符:只有一個,即為條件運(yùn)算符運(yùn)算符分類:(按功能劃分)算術(shù)運(yùn)算符:+(加)-(減)*(乘)/(除)%(求余)++(自加)--(自減)關(guān)系運(yùn)算符:>(大于)<(小于)==(等于)>=(大于或等于)<=(小于或等于)?。剑ú坏扔谶壿嬤\(yùn)算符:&&與||或!非位運(yùn)算符:<<左移>>右移等賦值運(yùn)算符:=條件運(yùn)算符:?:逗號運(yùn)算符:,在學(xué)習(xí)運(yùn)算符時要掌握幾個要點(diǎn):符號:怎樣書寫功能:做什么目數(shù):操作數(shù)的多少優(yōu)先級:用來決定它在表達(dá)式中的運(yùn)算次序。如計算表達(dá)式a+b*(c-d)/e時,運(yùn)算次序依次為:-,*,/,+。結(jié)合性:是指表達(dá)式中出現(xiàn)同等優(yōu)先級的操作符時,該先做哪個操作的規(guī)定從左到右:如d=a+b-c;
(大多數(shù)表達(dá)式)從右到左:如d=a=3;//C++規(guī)定,賦值號是先右后左,先做a=3,其結(jié)果再賦給d
(單目、賦值、條件運(yùn)算符適用)例如:inta=3;//a是變量,所以a是左值
constintb=4;//b是常量,所以b不是左值。顯然常量不是左值,因?yàn)镃語言規(guī)定常量的值一旦確定就不能更改的。右值:只能出現(xiàn)在賦值表達(dá)式的右邊。左值表達(dá)式也可以作為右值表達(dá)式。例如:
inta,b=6;
a=b;
//b是變量,是左值,此處作右值
a=8;
//8是常量,只能作右值,不能作左值左值和右值:
左值:是能出現(xiàn)在賦值表達(dá)式左邊的表達(dá)式。左值表達(dá)式具有存放數(shù)據(jù)的空間,而且存放是允許的2.5.1基本雙目運(yùn)算符(5個)+,-,*:含義與數(shù)學(xué)上相同;(注:兩個數(shù)相乘時,*不能省略)/
: 對于整型數(shù)則為除法取整操作,例如,5/2得到結(jié)果2;
如果除數(shù)或被除數(shù)中有一個為負(fù)值,舍入方向不固定。例如,-5/2,有的系統(tǒng)中得到的結(jié)果為-2,在有的系統(tǒng)中則得到結(jié)果為-3。 對于浮點(diǎn)數(shù)則為通常意義的除法,例如,5.0/2.0得到結(jié)果為2.5 由此可見,/操作符可以對不同的數(shù)據(jù)類型進(jìn)行不同的操作。2.5算術(shù)運(yùn)算符與表達(dá)式%只能對整型數(shù)進(jìn)行操作,其操作意義取余。例如,5%2得到結(jié)果1??捎脕砼袛嗾麛?shù)的奇偶性
不允許對浮點(diǎn)數(shù)進(jìn)行%運(yùn)算,如果對浮點(diǎn)數(shù)操作,則會引起編譯錯誤。表達(dá)式:利用這些運(yùn)算符和數(shù)學(xué)函數(shù)可以構(gòu)造許多復(fù)雜的式子。例如:計算圓面積:area=3.14*r*r;已知直角三角形的兩條直角邊,求斜邊長度:
c=sqrt(a*a+b*b);2.5.2單目運(yùn)算符(2個)
++、--功能:使變量的值加1或減1前綴++i、--i
:在使用i之前,先使i的值加(減)1后綴i++、i--
:在使用i之后,再使i的值加(減)1例如:intp;inti=3;p=++i;//i的值:4,p的值:4 intq;intj=3;q=j++;//j的值:4,q的值:3前綴與后綴自增(減)運(yùn)算符的比較:對自增(減)的作用是相同的,均能夠增加1(減少1);對當(dāng)中的取值是有影響的,涉及先取值,還后取值問題。說明:++、--只適合于變量,不能用于常量,5++、a++b、(a++b)++都是錯誤的。2.5算術(shù)運(yùn)算符與表達(dá)式#include<iostream>usingnamespacestd;intmain(){ inta=10; cout<<"a="<<a<<",執(zhí)行b=--a;語句后:"; intb=--a; //相當(dāng)于a=a-1;b=a; cout<<"a="<<a<<",b="<<b<<endl;
cout<<"a="<<a<<",執(zhí)行b=--a;語句后:"; intc=a--; //相當(dāng)于a=a-1;b=a; cout<<"a="<<a<<",c="<<c<<endl; return0;}例5前綴與后綴自減運(yùn)算符(--)的比較說明:若用自增、自減運(yùn)算符構(gòu)成表達(dá)式,則越簡單越好,最好是類似“a++”或“++a”這種表達(dá)式,以增強(qiáng)代碼的可讀性。2.5.3算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級2.5算術(shù)運(yùn)算符與表達(dá)式C++語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。原則:在求解表達(dá)式時,先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,先乘除后加減。如有表達(dá)式a-b*c,b的左側(cè)為減號,右側(cè)為乘號,而乘號優(yōu)先于減號,因此,相當(dāng)于a-(b*c)。如果在一個運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級別相同,如a-b+c,則按規(guī)定的“結(jié)合方向”處理結(jié)合性
算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后右,因此b先與減號結(jié)合,執(zhí)行a-b的運(yùn)算,再執(zhí)行加c的運(yùn)算?!白宰笾劣业慕Y(jié)合方向”又稱“左結(jié)合性”,即運(yùn)算對象先與左面的運(yùn)算符結(jié)合。賦值運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?,即右結(jié)合性。2.5.4表達(dá)式中各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算在表達(dá)式中常遇到不同類型數(shù)據(jù)之間進(jìn)行運(yùn)算,如10+'a'+1.5-0.1*'b'2.5算術(shù)運(yùn)算符與表達(dá)式在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則按圖所示。2.5.5強(qiáng)制類型轉(zhuǎn)換有兩種不同方式:隱式轉(zhuǎn)換(自動轉(zhuǎn)換):不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算,會將兩個操作數(shù)自動作適當(dāng)?shù)念愋娃D(zhuǎn)換,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的方向見右圖:2.5算術(shù)運(yùn)算符與表達(dá)式charshortintlongintunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble說明:+、-、*、/運(yùn)算的兩個數(shù)中有一個數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算;如果int型與float或double型數(shù)據(jù)進(jìn)行運(yùn)算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算,結(jié)果是double型;char型數(shù)據(jù)與int型數(shù)據(jù)進(jìn)行運(yùn)算,就是把字符的ASCII代碼與整型數(shù)據(jù)進(jìn)行運(yùn)算。顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換):格式:類型名
(表達(dá)式)或(類型名)
表達(dá)式或(類型名)(表達(dá)式)例如:(double)a //將a轉(zhuǎn)換成double類型 (int)(x+y) //將x+y的值轉(zhuǎn)換成int型 (float)(5%3) //將5%3的值轉(zhuǎn)換成float型#include<iostream>usingnamespacestd;intmain(){floatx;inti;x=3.6;i=(int)x;cout<<"x="<<x<<",i="<<i<<endl;return0;}例6強(qiáng)制類型轉(zhuǎn)換說明:若用自增、自減運(yùn)算符構(gòu)成表達(dá)式,則越簡單越好,最好是類似“a++”或“++a”這種表達(dá)式,以增強(qiáng)代碼的可讀性。2.6.1賦值運(yùn)算符2.6賦值運(yùn)算符與表達(dá)式格式:變量=表達(dá)式功能:先計算表達(dá)式的值,再賦給左邊的變量,即:把表達(dá)式的值存入左邊變量所標(biāo)識的存儲單元中例如:c=max(a,b);//將函數(shù)返回值存放到變量c標(biāo)識的存儲單元說明:=是“賦值”的含義,不是數(shù)學(xué)中的“等于號”,例如:n=n+1是將n標(biāo)識存儲單元的值加1后存回到該單元;左邊必須是左值,通常為變量,不能是常量,a+b=c是錯誤的。x=y執(zhí)行后,改變的是x值,y值不變;=兩邊的數(shù)據(jù)類型要求相同,若不同,則在賦值前自動把右邊表達(dá)式的值轉(zhuǎn)換為與左邊類型相同的值,再賦給左邊變量。
如執(zhí)行x=20/3.0時,若x為整型,則得到的x值為6(舍去小數(shù)部分);2.6.2賦值過程中的類型轉(zhuǎn)換2.6賦值運(yùn)算符與表達(dá)式兩側(cè)類型一致時,直接賦值;兩側(cè)類型不一致,但都是算術(shù)類型時,自動將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值,請注意以下情況:float型變量=double型值;(損失精度)int型變量=char型值;(賦字符的ASCII碼(整數(shù)值))少字節(jié)整型變量=多字節(jié)整型值;(賦低字節(jié)數(shù)值,即截斷)定義變量時要防止數(shù)據(jù)溢出。2.6.3復(fù)合賦值運(yùn)算符2.6賦值運(yùn)算符與表達(dá)式包括:+=、-=、*=、/=、%=等功能:把右邊表達(dá)式的值同左邊變量的值進(jìn)行相應(yīng)運(yùn)算后,再把這個運(yùn)算結(jié)果賦給左邊的變量,該復(fù)合賦值表達(dá)式的值也就是保存在左邊變量中的值; 例如: 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%y;已知:a=6,計算表達(dá)式:a+=a-=a+a的值思路:賦值運(yùn)算符結(jié)合性是從右到左①先計算表達(dá)式a+a的值,得到12(a=6);②再計算表達(dá)式a-=12(即a=a-12)值,得到a=-6,表達(dá)式值也為-6;③最后計算a+=-6(即a=a+(-6)值,得到a=-12,表達(dá)式值為-12。優(yōu)點(diǎn):簡潔(可讀性也不差),編譯速度快思考44已知:a=10,b=15,c=20。請說出下列表達(dá)式的值:a=b=c=3;a=5+(d=7);a=(b=6)/(c=2);cout<<(a=b);a=(a=b)=b*c;2.6.4賦值表達(dá)式2.6賦值運(yùn)算符與表達(dá)式格式:變量=表達(dá)式賦值表達(dá)式除了給左邊變量賦值外,表達(dá)式本身也有值,其值為左邊變量的值,也就是說:式子x=y=0是允許的,相當(dāng)于x=(y=0),即先給y賦0,再賦表達(dá)式y(tǒng)=0的值(也為0)給x,這樣x、y的值都賦0值;優(yōu)先級:只高于逗號運(yùn)算符,比其它運(yùn)算符級別都低結(jié)合性:從右到左
例如:a=b=c=4123例7:編程實(shí)現(xiàn):輸入華氏溫度,輸出對應(yīng)的攝氏溫度。#include<iostream>usingnamespacestd;intmain(){ floatf,c; cout<<"請輸入華氏溫度:"; cin>>f; c=5.0/9*(f-32); cout<<"華氏溫度:"<<f<<",對應(yīng)攝氏溫度:"<<c<<endl; return0;}思路:①程序的基本結(jié)構(gòu)(預(yù)處理指令、main());②華氏溫度轉(zhuǎn)換為攝氏溫度的公式:c=5*(f-32)/9;③定義哪些變量例8:計算存款利息:有1000元,想存一年。有三種可選方案:(1)活期,年利率為r1;(2)一年定期,年利率為r2;(3)存兩次半年期,年利率為r3。問:哪一種方案更合算?#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ floatp0=1000,p1,p2,p3,r1=0.005,r2=0.035,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海鮮購銷合同范本模板示例
- 借款合同協(xié)議格式
- 技術(shù)開發(fā)與服務(wù)協(xié)議
- 玻璃原片采購交易價目表
- 借款合同中的抵押條款
- 重新簽訂的合同協(xié)議
- 農(nóng)產(chǎn)品選購合同格式
- 展覽活動承包合同
- 文化傳播公司內(nèi)容創(chuàng)意與市場推廣策略方案設(shè)計方
- 智慧城市管理
- 土壤采樣方案
- 110kV升壓站構(gòu)支架組立施工方案
- 何以中國:公元前的中原圖景
- 【中藥貯藏與養(yǎng)護(hù)問題及解決對策4000字(論文)】
- 自然環(huán)境對聚落的影響
- 2023-2024學(xué)年天津市部分地區(qū)六年級數(shù)學(xué)第一學(xué)期期末綜合測試試題含答案
- 河南省洛陽市偃師區(qū)2023-2024學(xué)年四年級數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含答案
- 小學(xué)生預(yù)防性侵講稿
- 人工智能算法貝葉斯算法
- 外墻外保溫監(jiān)理實(shí)施細(xì)則
- 剪映使用課件s
評論
0/150
提交評論