版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三講表達(dá)式和語句語句、表達(dá)式基本概念運(yùn)算符優(yōu)先級(jí)和結(jié)合性表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換語句算法基本概念程序是一些按次序執(zhí)行的語句,執(zhí)行語句是為了要完成某個(gè)操作,修改某個(gè)數(shù)據(jù)。程序中大部分語句是由表達(dá)式構(gòu)成的。表達(dá)式是計(jì)算求值的基本單位,它是由運(yùn)算符和運(yùn)算數(shù)組成的式子。運(yùn)算符是表示進(jìn)行某種運(yùn)算的符號(hào)。運(yùn)算數(shù)包含常量、變量和函數(shù)等。
C++語言定義了豐富的運(yùn)算符。這些運(yùn)算符按所要求的操作數(shù)的多少,可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。按運(yùn)算符的運(yùn)算性質(zhì)又可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等。運(yùn)算符算術(shù)運(yùn)算符:
+-*/%
關(guān)系運(yùn)算符:
<<=>===!=
邏輯運(yùn)算符:
!&&||
位運(yùn)算符:
<<>>~|^&
自增自減運(yùn)算符:
++--
賦值運(yùn)算符
=及其擴(kuò)展(+=-=*=/=%=等)條件運(yùn)算符:
?:
指針運(yùn)算符:*和
&
逗號(hào)運(yùn)算符:
,
函數(shù)調(diào)用運(yùn)算符()下標(biāo)運(yùn)算符[]
求字節(jié)運(yùn)算符
sizeof
強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(type)
算術(shù)運(yùn)算符
算術(shù)運(yùn)算符有雙目運(yùn)算和單目運(yùn)算兩種。包括:
+(加法運(yùn)算符,或取正運(yùn)算符,如1+2,+3)
-(減法運(yùn)算符,或取負(fù)運(yùn)算符,如1-2,-3)*(乘法運(yùn)算符,如1*2)
/(除法運(yùn)算符,如1/2)
%(模運(yùn)算符或稱求余運(yùn)算符,如7%3=1)其中+(取正)、-(取負(fù))是單目運(yùn)算符,其余是雙目運(yùn)算符“/”運(yùn)算符的兩個(gè)操作數(shù)都是整數(shù)時(shí),其計(jì)算結(jié)果應(yīng)是除法運(yùn)算后所得商的整數(shù)部分。例如,5/2的結(jié)果是2。取余運(yùn)算符(%)的兩個(gè)操作數(shù)必須是整數(shù)或字符型數(shù)據(jù)。賦值運(yùn)算符(1)賦值運(yùn)算符“=”的一般格式為:
變量=表達(dá)式; 表示將其右側(cè)的表達(dá)式求出結(jié)果,賦給其左側(cè)的變量。例如:
inti; i=3*(4+5); //i的值變?yōu)?7(2)賦值表達(dá)式本身的運(yùn)算結(jié)果是右側(cè)表達(dá)式的值,而結(jié)果類型是左側(cè)變量的數(shù)據(jù)類型。例如:
inti=1.2*3; //結(jié)果為3,而不是3.6(3)賦值運(yùn)算符的結(jié)合性是從右至左的,因此,C++程序中可以出現(xiàn)連續(xù)賦值的情況。例如,下面的賦值是合法的:
inti,j,k; i=j=k=10;(4)復(fù)合運(yùn)算符:
+=(加賦值), -=(減賦值), *=(乘賦值), /=(除賦值),
%=(取模賦值),
<<=(左移賦值),
>>=(右移賦值),
&=(與賦值),
^=(異或賦值),
|=(或賦值)
例如:inta=12;a+=a;
intb=12;b+=b-=b*=b;關(guān)系運(yùn)算符(1)關(guān)系運(yùn)算符用于兩個(gè)值進(jìn)行比較,運(yùn)算結(jié)果為true(真)或false(假),分別用值非0(true)或0(false)表示。C++中的關(guān)系運(yùn)算符如下:
<(小于),
<=(小于等于),
>(大于),
>=(大于等于),==(等于),
!=(不等于),
(2)關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性是從左到右,<、<=、>、>=運(yùn)算符的優(yōu)先級(jí)相同,==和!=運(yùn)算符的優(yōu)先級(jí)相同,前者運(yùn)算的優(yōu)先級(jí)高于后者。(3)關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符而高于賦值運(yùn)算符。例如:
a+b>c 等價(jià)于
(a+b)>c a!=b>c 等價(jià)于 a!=(b>c)
邏輯運(yùn)算符
&&(邏輯與),||(邏輯或),?。ㄟ壿嫹牵? 邏輯表達(dá)式的結(jié)果為真則為1,結(jié)果為假則為0。 邏輯非(?。┦菃文窟\(yùn)算符,邏輯與(&&)與邏輯或(||)為雙目運(yùn)算符。
邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低。
“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。
aba&&ba||b!a!b0000110非00110非000101非0非01100自增、自減運(yùn)算符(1)自增(++)、自減(--)運(yùn)算符為變量的增1和減1提供了緊湊格式。(2)自增、自減運(yùn)算符都是單目運(yùn)算符,其作用是使變量的值增1或減1。(3)自增、自減運(yùn)算符有四種應(yīng)用格式:
inta=3;b=a++;等價(jià)于b=a;a=a+1;
inta=3;b=a--;等價(jià)于b=a;a=a-1;
(運(yùn)算符后置用法,代表先使用變量,然后對(duì)變量增值)
inta=3;b=++a;等價(jià)于
a=a+1;b=a;
inta=3;b=--a;等價(jià)于a=a-1;b=a;
(運(yùn)算符前置用法,代表先對(duì)變量增值,再使用變量)
(4)C++編譯器在處理時(shí)盡可能多的自左向右將運(yùn)算符結(jié)合在一起。如:a+++b表示為(a++)+b而不是a+(++b)。(5)++,––,的結(jié)合性為從右至左,而一般算術(shù)運(yùn)算符為從左至右。如:–i++相當(dāng)于–(i++)。(6)++和––運(yùn)算法只能用于變量,不得用于常量和表達(dá)式。如:
5++,(a+b)++均為不合法。條件運(yùn)算符(1)條件運(yùn)算符“?:”是C++中惟一三目運(yùn)算符,其形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3
它的運(yùn)算方式為:先計(jì)算表達(dá)式1的值,如果其值為非0(真),則表達(dá)式2的值就是整個(gè)表達(dá)式的最終結(jié)果;否則表達(dá)式3的值就是整個(gè)表達(dá)式的值。常見的一個(gè)例子為:
max=((a>b)?a:b)
上面例子定義了一個(gè)求兩個(gè)數(shù)a和b中最大值,其中決定哪一個(gè)是最大值用了條件運(yùn)算符。(2)條件運(yùn)算符的結(jié)合性是自右向左。例如有以下條件表達(dá)式:
a>b?a:c>d?c:d相當(dāng)于
a>b?a:(c>d?c:d)(3)條件運(yùn)算符的優(yōu)先級(jí)別高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。例如有:
a>b?a-b:b-a相當(dāng)于
a>b?(a-b):(b-a)位運(yùn)算符(1)位(bit)是計(jì)算機(jī)中表示信息的最小單位,一般用0和1表示。一個(gè)字符在計(jì)算機(jī)中用8個(gè)位表示,8個(gè)位組成一個(gè)字節(jié)。C++語言需要將人們通常所習(xí)慣的十進(jìn)制數(shù)表示為二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)來理解對(duì)位的操作。C++中所有的位運(yùn)算符如下:
~(按位求反),<<(左移),
>>(右移), &(按位與), ^(按位異或),
|(按位或)。(2)位運(yùn)算符是對(duì)其操作數(shù)按其二進(jìn)制形式逐位進(jìn)行運(yùn)算,參加位運(yùn)算的操作數(shù)必須為整數(shù)。sizeof運(yùn)算符(求字節(jié)運(yùn)算符)(1)sizeof運(yùn)算符是單目運(yùn)算符,用于計(jì)算運(yùn)算對(duì)象在內(nèi)存中所占字節(jié)的多少,它有兩種形式:
sizeof
(類型標(biāo)識(shí)符);
sizeof
表達(dá)式;(2)sizeof可以接受的類型標(biāo)識(shí)符很多,如sizeof(int)表示求整型數(shù)據(jù)在內(nèi)存中所占字節(jié)數(shù)。
例如:inta,則sizeof(a)表示求變量a在內(nèi)存中所占字節(jié)數(shù)。 例如:inta[10],則sizeof(a)表示求數(shù)組a在內(nèi)存中所占字節(jié)數(shù)。
逗號(hào)運(yùn)算符(1)逗號(hào)運(yùn)算符用于將多個(gè)表達(dá)式連在一起,并將各表達(dá)式從左到右的順序依次求值,但只有其最右端的表達(dá)式的結(jié)果,作為整個(gè)逗號(hào)表達(dá)式的結(jié)果。(2)逗號(hào)表達(dá)式的一般格式為:
表達(dá)式1,表達(dá)式2,……,表達(dá)式n
例如:
inta=3,b=4,c=5; a+b,b+c,c+a;
則先求解a+b,再求解b+c,最后求解c+a,整個(gè)表達(dá)式的結(jié)果為c+a的結(jié)果。
運(yùn)算符優(yōu)先級(jí)(1)運(yùn)算符優(yōu)先級(jí)決定了在表達(dá)式中各個(gè)運(yùn)算符執(zhí)行的先后順序。高優(yōu)先級(jí)運(yùn)算符先于低優(yōu)先級(jí)運(yùn)算符進(jìn)行運(yùn)算。(2)當(dāng)表達(dá)式中出現(xiàn)了括號(hào)時(shí),會(huì)改變優(yōu)先級(jí)。先計(jì)算括號(hào)中的子表達(dá)式值,再計(jì)算整個(gè)表達(dá)式的值。(3)運(yùn)算符的結(jié)合方式有兩種:左結(jié)合和右結(jié)合。左結(jié)合表示運(yùn)算對(duì)象先與其左邊的運(yùn)算符結(jié)合,如加法;右結(jié)合表示運(yùn)算對(duì)象優(yōu)先與其右邊的運(yùn)算符結(jié)合,如單目運(yùn)算符+、-。(4)同一優(yōu)先級(jí)的優(yōu)先級(jí)別相同,運(yùn)算次序由結(jié)合方向決定。如1*2/3,*和/的優(yōu)先級(jí)別相同,其結(jié)合方向自左向右,則等價(jià)于(1*2)/3。(5)不同的運(yùn)算符要求有不同的運(yùn)算對(duì)象個(gè)數(shù),單目運(yùn)算符只需一個(gè)運(yùn)算對(duì)象,如i++,-a,sizeof(b)等。優(yōu)先級(jí)操作符結(jié)合性1()[].->::左→右2!~+-++--&*(強(qiáng)制轉(zhuǎn)換類型)sizeof
右→左3*/%左→右4+加-減左→右5<<左移>>右移左→右6<<=>=>左→右7==!=左→右8&按位與左→右9^按位異或左→右10|按位或左→右11&&左→右12||左→右13?:右→左14=*=/=+=-=|=<<=>>=右→左15,左→右優(yōu)先級(jí)和結(jié)合性表達(dá)式
表達(dá)式是用于計(jì)算的式子,它由運(yùn)算符、運(yùn)算數(shù)和括號(hào)組成。最簡(jiǎn)單的表達(dá)式只有一個(gè)常量或變量,當(dāng)表達(dá)式中有兩個(gè)或多個(gè)運(yùn)算符時(shí),表達(dá)式稱為復(fù)雜表達(dá)式,其中運(yùn)算符執(zhí)行的先后順序由它們的優(yōu)先級(jí)和結(jié)合性決定。執(zhí)行表達(dá)式所規(guī)定的運(yùn)算,所得到的結(jié)果值便是表達(dá)式的值。
C++中由于運(yùn)算符很豐富,因此表達(dá)式的種類也很多。常用的表達(dá)式有6種。
1. 算術(shù)表達(dá)式 由算術(shù)運(yùn)算符和位操作運(yùn)算符組成的表達(dá)式。其表達(dá)式的值是一個(gè)數(shù)值,表達(dá)式的類型由運(yùn)算符和運(yùn)算數(shù)確定。 例如,
a+3*(b/2)就是一個(gè)算術(shù)表達(dá)式。2. 邏輯表達(dá)式 由邏輯運(yùn)算符組成的表達(dá)式。其表達(dá)式的值的類型為邏輯型,一般地,真用1表示,假用0表示。 例如,!a&&b||c就是一個(gè)邏輯表達(dá)式。
3. 關(guān)系表達(dá)式 由關(guān)系運(yùn)算符組成的表達(dá)式。其表達(dá)式的值的類型為邏輯型,一般地,真用1表示,假用0表示。 例如,a>b!=c就是一個(gè)關(guān)系表達(dá)式。4. 賦值表達(dá)式 由賦值運(yùn)算符組成的表達(dá)式。 例如,已知a=b就是一個(gè)賦值表達(dá)式。
5. 條件表達(dá)式 由三目運(yùn)算符組成的表達(dá)式。條件表達(dá)式的值取決于?號(hào)前面的表達(dá)式,該表達(dá)式的值為非0時(shí),整個(gè)表達(dá)式的值為“:”號(hào)前面表達(dá)式的值,否則為“:”號(hào)后面表達(dá)式的值。條件表達(dá)式的類型是“:”號(hào)前和“:”號(hào)后兩個(gè)表達(dá)式中類型高的一個(gè)表達(dá)式的類型。 例如,a>b?a:b就是一個(gè)條件表達(dá)式。6. 逗號(hào)表達(dá)式 用逗號(hào)將若干個(gè)表達(dá)式連起來組成的表達(dá)式。該表達(dá)式的值是組成逗號(hào)表達(dá)式的若干個(gè)表達(dá)式中最后一個(gè)表達(dá)式的值,類型也是最后一個(gè)表達(dá)式的類型。逗號(hào)表達(dá)式計(jì)算值的順序是從左至右逐個(gè)表達(dá)式分別計(jì)算。 例如,a+3,b+4,c+5就是一個(gè)逗號(hào)表達(dá)式。
數(shù)據(jù)類型轉(zhuǎn)換
C++中數(shù)據(jù)類型轉(zhuǎn)換有兩類,即隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換。1、隱式類型轉(zhuǎn)換 隱式類型轉(zhuǎn)換是由編譯器自動(dòng)完成的類型轉(zhuǎn)換。當(dāng)編譯器遇到不同類型的數(shù)據(jù)參與同一運(yùn)算時(shí),會(huì)自動(dòng)將它們轉(zhuǎn)換為相同類型后再進(jìn)行運(yùn)算,賦值時(shí)會(huì)把所賦值的類型轉(zhuǎn)換為與被賦值變量類型一樣。隱式類型轉(zhuǎn)換按從低到高的順序進(jìn)行。
數(shù)據(jù)類型轉(zhuǎn)換的順序整型(int)短整型,字符型(short,char)單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)無符號(hào)長(zhǎng)整型(unsigned
long)長(zhǎng)整型(long)無符號(hào)整型(unsigned)2、顯式類型轉(zhuǎn)換顯式類型轉(zhuǎn)換是由程序員顯式指出的類型轉(zhuǎn)換,轉(zhuǎn)換形式有兩種:
類型名(表達(dá)式) (類型名)表達(dá)式 這里的“類型名”是任何合法的C++數(shù)據(jù)類型,例如float、int等。通過類型的顯式轉(zhuǎn)換可以將“表達(dá)式”轉(zhuǎn)換成適當(dāng)?shù)念愋汀? 例如:doublef=3.6;
intn=(int)f;//n=3。注意:轉(zhuǎn)換后的類型數(shù)據(jù)由系統(tǒng)分配一個(gè)中間變量存放,而原變量類型不變。左值和右值左值(leftvalue)指能出現(xiàn)在賦值表達(dá)式左邊的表達(dá)式。左值表達(dá)式具有存放數(shù)據(jù)的空間,并且存放是允許的。如:inta=3;constintb=4;右值(rightvalue)只能出現(xiàn)在表達(dá)式的右邊。左值表達(dá)式可以作為右值表達(dá)式。語句語句是程序中最小的獨(dú)立單位,根據(jù)復(fù)雜程度的不同,可以分為簡(jiǎn)單語句和復(fù)合語句;根據(jù)執(zhí)行流程的不同,又可以分為順序語句、分支語句和循環(huán)語句,這三種基本結(jié)構(gòu)能夠組織成任意復(fù)雜的程序。空語句是最簡(jiǎn)單的語句,僅由一個(gè)分號(hào)組成,表示什么也不做。復(fù)合語句由一對(duì)花括號(hào)“{}”和括號(hào)里的一系列簡(jiǎn)單語句組成,通常用在分支語句和循環(huán)語句中。順序結(jié)構(gòu)語句順序結(jié)構(gòu)語句在執(zhí)行過程中,程序的流程不會(huì)發(fā)生轉(zhuǎn)移。常見的順序結(jié)構(gòu)語句有:聲明語句、賦值語句和輸入輸出語句。選擇結(jié)構(gòu)語句
if(條件表達(dá)式)//語句1;else
//語句2;if(條件表達(dá)式)//語句1;if(條件表達(dá)式1)//語句1;elseif(條件表達(dá)式2)//語句2;………elseif(條件表達(dá)式n)//語句n;else//語句n+1;多分支結(jié)構(gòu)單分支結(jié)構(gòu)雙分支結(jié)構(gòu)多分支語句
嵌套的if可以處理多分支選擇,但容易引起困惑和許多難以發(fā)現(xiàn)的錯(cuò)誤,可以用switch語句來替代它們,格式為:switch(判斷表達(dá)式){
case
常量表達(dá)式1:語句1;
break;
case常量表達(dá)式2:語句2;
break;
//……
default:語句n+1;
}case后面的常量表達(dá)式必須是整型、字符型或枚舉型表達(dá)式,并且要求互不相同,保證分支選擇的唯一性。case分支的后面如果有多條語句,可以用花括號(hào)“{}”括起來,也可以不用。default語句是可選項(xiàng),總是放在switch語句的最后。case語句僅起語句標(biāo)號(hào)作用,并不改變控制流程。在case語句中通常會(huì)用到break語句,它的作用是使程序流程退出switch語句,轉(zhuǎn)向switch語句后面的下一條語句。初學(xué)者易犯的一個(gè)錯(cuò)誤是忽略break語句在使用switch語句時(shí),需要注意以下四個(gè)問題:循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
語句;while(表達(dá)式)
語句;do
語句;while(表達(dá)式);while循環(huán)語句do-while循環(huán)語句for循環(huán)語句轉(zhuǎn)移語句用來改變程序的順序執(zhí)行流程,將程序執(zhí)行流程轉(zhuǎn)移到程序其他地方。包括:break、continue、goto和return等。break語句一般只用于while、do-while、for或者switch語句,作用是終止執(zhí)行當(dāng)前的循環(huán)語句或者switch語句,跳轉(zhuǎn)到當(dāng)前語句的下一條語句。在循環(huán)嵌套中,break語句用來從最近的封閉循環(huán)體內(nèi)跳出,而不能中止所有的循環(huán)語句。continue語句用在循環(huán)語句中,作用為結(jié)束本次循環(huán),即跳過循環(huán)體中尚未執(zhí)行的語句,接著進(jìn)行下一次是執(zhí)行循環(huán)的判定程序的靈魂——算法做任何事情都有一定的步
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效噪聲抑制技術(shù)在多模光纖成像中的應(yīng)用
- 微反應(yīng)器構(gòu)建與溫度控制策略探討
- 納秒脈寬芯片:皮秒技術(shù)新進(jìn)展
- 光計(jì)算網(wǎng)絡(luò)設(shè)計(jì)中的誤差控制研究
- 相位估計(jì)方法在能量守恒領(lǐng)域的應(yīng)用研究
- 光計(jì)算網(wǎng)絡(luò)誤差分析與優(yōu)化路徑探討
- 體育賽事組織與管理暫行辦法
- 2024年度農(nóng)產(chǎn)品深加工專用有機(jī)肥料采購(gòu)合同2篇
- 石油化工廠圍墻施工合同
- 2024科技公司產(chǎn)品發(fā)布會(huì)背板制作合同3篇
- 2024年1月國(guó)開電大法律事務(wù)專科《法律咨詢與調(diào)解》期末考試試題及答案
- 鐵路職業(yè)病防治工作課件
- 快速響應(yīng)客戶需求機(jī)制
- 環(huán)境影響評(píng)價(jià)技術(shù)方案
- 部隊(duì)預(yù)防醉駕
- 皖醫(yī)大兒科學(xué)習(xí)題及答案
- 劉鐵敏《金融專業(yè)英語》(第2版)-習(xí)題參考答案20
- 《公路工程建設(shè)監(jiān)理》課件
- 中外設(shè)計(jì)史授課教案
- 2023-2024學(xué)年黑龍江省哈爾濱一中高一(上)期末數(shù)學(xué)試卷
- 2024年管理學(xué)理論考核試題及答案
評(píng)論
0/150
提交評(píng)論