網(wǎng)絡(luò)學(xué)院系列培訓(xùn)教程運(yùn)算符表達(dá)式_第1頁
網(wǎng)絡(luò)學(xué)院系列培訓(xùn)教程運(yùn)算符表達(dá)式_第2頁
網(wǎng)絡(luò)學(xué)院系列培訓(xùn)教程運(yùn)算符表達(dá)式_第3頁
網(wǎng)絡(luò)學(xué)院系列培訓(xùn)教程運(yùn)算符表達(dá)式_第4頁
網(wǎng)絡(luò)學(xué)院系列培訓(xùn)教程運(yùn)算符表達(dá)式_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

運(yùn)算符和表達(dá)式-1C++中的運(yùn)算符和表達(dá)式1運(yùn)算符2表達(dá)式運(yùn)算符和表達(dá)式在C++的編程世界中,運(yùn)算符和表達(dá)式就像是數(shù)學(xué)運(yùn)算中的公式一樣,是必需的。正確、靈活地使用運(yùn)算符和表達(dá)式,需要編程開發(fā)者有扎實的基本功。認(rèn)真、深入地學(xué)習(xí)本課,將助你在編程之路上前行,邁步更加堅實。C++中的運(yùn)算符和表達(dá)式C++各種運(yùn)算符的使用方法,以及由運(yùn)算符組成的表達(dá)式,從而使你正確使用操作數(shù)的類型轉(zhuǎn)換和運(yùn)算符的優(yōu)先級順序和結(jié)合性。認(rèn)真、深入學(xué)習(xí)這一章,將助你在編程之路上前行,邁步更加堅實。運(yùn)算符在C++語言中,包含多種運(yùn)算符,不同運(yùn)算符有不同的運(yùn)算次序,比如“*”、“/”的優(yōu)先級高于“+”、“-”的優(yōu)先級。如果表達(dá)式中相同運(yùn)算符有一個以上,則可以從左至右或從右至左地計算它,這稱作為結(jié)合性?!?”、“-”、“*”和“/”的結(jié)合性都是從左至右的。表達(dá)式表達(dá)式是由運(yùn)算符、操作數(shù)(常量、變量、函數(shù)等)和括號按照一定的規(guī)則組成的式子。常量、變量和函數(shù)可認(rèn)為是最簡單的表達(dá)式。表達(dá)式可以嵌套。每個表達(dá)式都有一個值。在計算時要考慮運(yùn)算符的優(yōu)先級、結(jié)合性及數(shù)據(jù)類型的轉(zhuǎn)換。計算機(jī)中的表達(dá)式都要寫在一行上。表達(dá)式有算數(shù)、賦值、關(guān)系、邏輯,逗號等。在表達(dá)式的后邊加個分號就是表達(dá)式語句。除控制語句外,幾乎都是表達(dá)式語句。算術(shù)運(yùn)算符和表達(dá)式1基本算術(shù)運(yùn)算符2算術(shù)運(yùn)算符和算術(shù)表達(dá)式3自加和自減運(yùn)算符基本算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算有加法、減法、乘法、除法和取模(求余數(shù)),下表基本算術(shù)運(yùn)算符說明。運(yùn)算符結(jié)合型乘法*從左至右除法/取模%加法+減法-算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.加、減、乘運(yùn)算inta,b,c;a=10;b=5;c=a+b*3-1;輸出c的結(jié)果是24。因為“*”的優(yōu)先級高于“+”和“-”,并且結(jié)合性為右結(jié)合,所以先算b*3,然后算a加上b與3的乘積15,最后算減法-1,得到結(jié)果b=24。2.取模運(yùn)算21%6 //結(jié)果是34%2 /結(jié)果是04.0%2 //程序報錯,%運(yùn)算符要求左右必須為整數(shù)取模運(yùn)算“%”,要求運(yùn)算符兩邊必須都是整數(shù),如果任何一邊不是整數(shù),程序就會報錯。算術(shù)運(yùn)算符和算術(shù)表達(dá)式3整除運(yùn)算5/4 //結(jié)果是14/5 //結(jié)果是0當(dāng)/運(yùn)算符用于兩個整數(shù)相除時,如果商含有小數(shù)部分,將被截掉,不進(jìn)行四舍五入。4浮點除運(yùn)算5/4.0 //結(jié)果是1.254.0/5 //結(jié)果是0.8要進(jìn)行通常意義的除運(yùn)算,則至少應(yīng)保證除數(shù)或被除數(shù)中有一個是浮點數(shù)或雙精度數(shù),可以在參加運(yùn)算的整數(shù)值后補(bǔ)上小數(shù)點與0作為雙精度(double)常量參加運(yùn)算。算術(shù)運(yùn)算符和算術(shù)表達(dá)式使用算術(shù)運(yùn)算符需要注意4個問題。(1)“/”運(yùn)算符的兩個運(yùn)算對象均為整數(shù)時,其結(jié)果是整數(shù),如果有一個是浮點型數(shù)據(jù),其結(jié)果是浮點數(shù);(2)取模運(yùn)算符“%”要求參與運(yùn)算的兩個數(shù)均為整數(shù);(3)遵循算術(shù)的自然特征,例如禁止除數(shù)位0;(4)防止數(shù)據(jù)長度的溢出。自加和自減運(yùn)算符++(自增)、–

–(自減)是C++中使用方便且效率很高的兩個運(yùn)算符,它們都是單目運(yùn)算符,運(yùn)算順序按照從右至左。1自加自減單獨(dú)運(yùn)算i++; //++后置--j; //--前置2自加前置運(yùn)算后直接賦值inti=5;x=++i; //i先加1(增值)后再賦給xy=i; //i=6,x=6,y=6自加和自減運(yùn)算符3自加前置運(yùn)算后再賦值inti=5;++i; //i自加1,值為6x=y=i; //i=6,y=6,x=64自加后置運(yùn)算后直接賦值inti=5;x=i++; //i賦給x后再加1y=i; //x=5,i=6,y=65自加后置運(yùn)算后再賦值inti=5;i++;x=y=i; //i=6,y=6,x=6自加和自減運(yùn)算符由于++、–

–運(yùn)算符內(nèi)含了賦值運(yùn)算,所以運(yùn)算對象只能賦值,不能作用于常量和表達(dá)式。比如5++、(x+y)++都是不合法的?!痉独?1】計算自加自減表達(dá)式的值關(guān)系運(yùn)算符和表達(dá)式1關(guān)系運(yùn)算符2關(guān)系表達(dá)式關(guān)系運(yùn)算符在解決許多問題時都需要進(jìn)行情況判斷,C++中提供了關(guān)系運(yùn)算符用于比較運(yùn)算符兩邊的值。比較后返回的結(jié)果為布爾常量true或false。運(yùn)算符結(jié)合性小于<小于等于<=大于>大于等于>=從左至右等于==不等于!=關(guān)系表達(dá)式1整數(shù)和整數(shù)的關(guān)系表達(dá)式a=1;b=2;c=3;d=4;a+b>c+d“+”的優(yōu)先級高于“>”,所以先分別求出a+b和c+d的值,然后進(jìn)行關(guān)系比較,運(yùn)算結(jié)果false。關(guān)系表達(dá)式2字符和字符的關(guān)系表達(dá)式'a'<'b'+'c'“<”右邊需要求算術(shù)運(yùn)算和,所以字符‘b’和‘c’分別由字符型隱式的轉(zhuǎn)換為整型98和99,求和結(jié)果為197,“<”左邊的字符型也需要轉(zhuǎn)換為整型96才能進(jìn)行比較,整個表達(dá)式的值為true。關(guān)系表達(dá)式3關(guān)系表達(dá)式連用a>b>=c>d關(guān)系運(yùn)算符優(yōu)先級相同,所以按照從左至右依次計算。假設(shè)a=1,b=2,c=0,d=4,先計算a>b的值為false,然后計算false>=c,因為“>=”兩邊數(shù)據(jù)類型不一致,布爾類型false轉(zhuǎn)換為整型0,0>=0比較結(jié)果為true,最后計算true>3,true轉(zhuǎn)換為數(shù)值型1,1>4比較結(jié)果為false,所以整個表達(dá)式結(jié)果為false。關(guān)系表達(dá)式關(guān)系運(yùn)算符的比較運(yùn)算是由兩個等號組成,不要誤寫為賦值運(yùn)算符=。關(guān)系表達(dá)式判斷實數(shù)(float)是否相等,對下面兩個表達(dá)式分析一下。等于x==y應(yīng)寫成fabs(x–y)<1e–6不等于x!=y應(yīng)寫成fabs(x–y)>1e–6fabs(x–y)<1e–6表示x和y的差的絕對值小于0.000001,說明x和y的差值已經(jīng)非常小,可以認(rèn)為兩者相同。邏輯運(yùn)算符和表達(dá)式5.4.1邏輯運(yùn)算符5.4.2邏輯表達(dá)式邏輯運(yùn)算符和表達(dá)式公司開會,需要對某個決議進(jìn)行表決,只有全票通過,決議才能通過,只要有一票不通過,決議就通不過,如果用邏輯關(guān)系來描述,這叫做“與”;還是這個公司進(jìn)行,只要有一票反對,表決結(jié)果就是反對,只有大家都不反對,表決結(jié)果才是不反對,如果用邏輯關(guān)系來描述,這叫做“或”;其中某一票由贊同變?yōu)榉磳?,或者由反對變?yōu)橘澩?,這叫做“非”。邏輯運(yùn)算符邏輯運(yùn)算符是用于實現(xiàn)邏輯運(yùn)算和邏輯的判斷,返回類型是布爾(bool)型。下表為邏輯運(yùn)算符。運(yùn)算符優(yōu)先級邏輯求反!從左至右邏輯與&&邏輯或||邏輯表達(dá)式在實際應(yīng)用邏輯表示式之前,我們需要明確邏輯運(yùn)算表達(dá)式有哪些,結(jié)果是怎么樣的。下面我們就列出邏輯運(yùn)算關(guān)系表邏輯表達(dá)式結(jié)果邏輯表達(dá)式結(jié)果0&&0false0&&1false1&&0false1&&1true0||0false0||1true1||0true1||1true!0true!1false邏輯表達(dá)式假設(shè)a=10,b=5,c=–3,分析下面表達(dá)式的結(jié)果。!a值為false非0數(shù)求非運(yùn)算,結(jié)果為false;相反為0的數(shù)求非運(yùn)算,結(jié)果為true。a&&b值為true&&兩邊都是非0數(shù)值,結(jié)果為true。a||b值為true||兩邊只要有一邊數(shù)值不為0,結(jié)果就為true。a+c>=b&&b值為true因為“+”的優(yōu)先級高于“>=”,先計算a+c得7,再與b比較,7大于等于5成立,結(jié)果為true,轉(zhuǎn)換為數(shù)值類型1,最后再做邏輯與運(yùn)算,1和b邏輯與結(jié)果得true。條件運(yùn)算符和表達(dá)式條件表達(dá)式?:A?B:C其中,A,B和C分別是3個表達(dá)式。該運(yùn)算符的功能如下說明。先計算A;如果A的值為true(非0),返回B的值作為整個條件運(yùn)算表達(dá)式的值;如果A的值為false(0),返回C的值作為整個條件運(yùn)算表達(dá)式的值。條件運(yùn)算表達(dá)式的返回類型將是B和C這兩個表達(dá)式中數(shù)據(jù)類型高的那種類型。簡單條件表達(dá)式a=(x>y?12:10.0);若x>y(值為true),將12賦給a,否則a=10.0但a的類型最后都是double。5.6

賦值運(yùn)算符和表達(dá)式5.6.1賦值運(yùn)算符5.6.2賦值表達(dá)式賦值運(yùn)算符=+=-=*=/=%=&=^=|=>>=<<=&&=||=從右至左賦值表達(dá)式1簡單賦值語句inti=100;//變量名為i的地址中內(nèi)存放數(shù)據(jù)是100chara='A',b,c;//聲明三個字符型變量,同時變量a賦值為字符‘A‘/*變量b的值為‘A‘+1,即98,但是b是字符型,98再轉(zhuǎn)換為字符型數(shù)據(jù)’B‘,變量c的值等于變量b的值’B‘。*/c=b=a+1;如果a的地址是2000,此時該地址中存放的數(shù)據(jù)是'A';則b的地址是2001,此時該地址中存放的數(shù)據(jù)是'B';則c的地址是2002,此時該地址中存放的數(shù)據(jù)也是'B'。賦值表達(dá)式2復(fù)合賦值語句*=等價于x=x*y對賦值運(yùn)算還有下列幾點說明。簡練在C++中還可以連續(xù)賦值,賦值運(yùn)算符具有右結(jié)合性比如:x=y=2.6;//賦值運(yùn)算符是從右至左計算的,所以表示式相當(dāng)于:x=(y=2.6),根據(jù)優(yōu)先級,先計算括號里面的賦值語句,再把y的值賦值給x。再有:a=b=3+8;//按照右結(jié)合,先計算3+8,然后將11賦給b,再將b的值11賦給a賦值表達(dá)式【范例-2】賦值運(yùn)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論