運(yùn)算符的優(yōu)先級和結(jié)合性_第1頁
運(yùn)算符的優(yōu)先級和結(jié)合性_第2頁
運(yùn)算符的優(yōu)先級和結(jié)合性_第3頁
運(yùn)算符的優(yōu)先級和結(jié)合性_第4頁
運(yùn)算符的優(yōu)先級和結(jié)合性_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、下面是C語言中所使用的運(yùn)算符的優(yōu)先級和結(jié)合性:優(yōu)先級運(yùn)算符結(jié)合性 (最高)()->.白左向右! +_ + _* & sizeof 白右向左*/%自左向右+ -白左向右« »白左向右<<=>>= 白左向右=!= 白左向右&白左向右A白左向右|自左向右&&白左向右|白左向右?:白右向左=+= -= *= /= %= &= A= |= «= »= 白右向左(最低),自左向右還有指針運(yùn)算符、sizeof運(yùn)算符、數(shù)組運(yùn)算符等等一、賦值運(yùn)算符賦值語句的作用是把某個常量或變雖或表達(dá)式的值賦值給另一個

2、變量。符號為這里并不是等于的意思,只是賦值,等于用='表示。注意:賦值語句左邊的變量在程序的其他地方必須要聲明。得已賦值的變量我們稱為左值,因?yàn)樗鼈兂霈F(xiàn)在賦值語句的左邊;產(chǎn)生值的表 達(dá)式我們稱為右值,因?yàn)樗鼈兂霈F(xiàn)在賦值語句的右邊。常數(shù)只能作為右值。例如:count=5;total1=total2=0;第一個賦值語句大家都能理解。第二個賦值語句的意思是把0同時賦值給兩個變量。這是因?yàn)橘x值語句是從右向左運(yùn)算的,也就是說從右端開始計(jì)算。這樣它先total2=0;然后total1=total2;那么我們這樣行不行呢?(total1=total2)=0;這樣是不可以的,因?yàn)橄纫憷ㄌ柪锩娴模@

3、時 total1=total2是一個表達(dá)式, 而賦值語句的左邊是不允許表達(dá)式存在的。二、算術(shù)運(yùn)算符在C語言中有兩個單目和五個雙目運(yùn)算符。符號功能+單目正-單目負(fù)*乘法/除法%取模+加法 -減法下面是一些賦值語句的例子,在賦值運(yùn)算符右側(cè)的表達(dá)式中就使用了上面的算術(shù)運(yùn)算符:Area=Height*Width;num=num1+num2/num3-num4;運(yùn)算符也有個運(yùn)算順序問題,先算乘除再算加減。單目正和單目負(fù)最先運(yùn)算。取模運(yùn)算符(%)用于計(jì)算兩個整數(shù)相除所得的余數(shù)。例如:a=7%4;最終a的結(jié)果是3,因?yàn)?%4的余數(shù)是3。那么有人要問了,我要想求它們的商怎么辦呢?b=7/4;這樣b就是它們的商

4、了,應(yīng)該是1。也許有人就不明白了, 7/4應(yīng)該是1.75,怎么會是1呢?這里需要說明的是, 當(dāng)兩個整數(shù)相除時,所得到的結(jié)果仍然是整數(shù),沒有小數(shù)部分。要想也得到小 數(shù)部分,可以這樣寫7.0/4或者7/4.0 ,也即把其中一個數(shù)變?yōu)榉钦麛?shù)。那么怎樣由一個實(shí)數(shù)得到它的整數(shù)部分呢?這就需要用強(qiáng)制類型轉(zhuǎn)換了。例如:a=(int) (7.0/4);因?yàn)?.0/4的值為1.75 ,如果在前面加上(int)就表示把結(jié)果強(qiáng)制轉(zhuǎn)換成整型,這 就得到了 1。那么思考一下a=(float) (7/4);最終a的結(jié)果是多少?單目減運(yùn)算符相當(dāng)于取相反值,若是正值就變?yōu)樨?fù)值,若是負(fù)數(shù)就變?yōu)檎?。單目加運(yùn)算符沒有意義,純粹是

5、和單目減構(gòu)成一對用的。三、邏輯運(yùn)算符邏輯運(yùn)算符是根據(jù)表達(dá)式的值來返回真值或是假值。其實(shí)在C語言中沒有所謂的真值和假值,只是認(rèn)為非0為真值,0為假值符號功能&&邏輯與|邏輯或!邏輯非例如:5!3;0|-2&&5;!4;當(dāng)表達(dá)式進(jìn)行&&運(yùn)算時,只要有一個為假,總的表達(dá)式就為假,只有當(dāng)所有都 為真時,總的式子才為真。當(dāng)表達(dá)式進(jìn)行|運(yùn)算時,只要有一個為真,總的值就 為真,只有當(dāng)所有的都為假時,總的式子才為假。邏輯非運(yùn)算是把相應(yīng)的變量數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的真/假值。若原先為假,則邏輯非以后為真,若原先為真, 則邏輯非以后為假。還有一點(diǎn)很重要,當(dāng)一個邏輯表達(dá)式的后

6、一部分的取值不會影響整個表達(dá)式的 值時,后一部分就不會進(jìn)行運(yùn)算了。例如:a=2,b=1;a|b-1;因?yàn)閍=2,為真值,所以不管b-1是不是真值,總的表達(dá)式一定為真值,這時 后面的表達(dá)式就不會再計(jì)算了。四、關(guān)系運(yùn)算符關(guān)系運(yùn)算符是對兩個表達(dá)式進(jìn)行比較,返回一個真/假值符號功能 >大于<小于>=大于等于<=小于等于=等于!=不等于這些運(yùn)算符大家都能明白,主要問題就是等于 =和賦值=的區(qū)別了。一些剛開始學(xué)習(xí)C語言的人總是對這兩個運(yùn)算符弄不明白,經(jīng)常在一些簡單問 題上出錯,白己檢查時還找不出來??聪旅娴拇a: if(Amount=123) 很多新人都理解為如果 Amount等于

7、123,就怎么樣。其實(shí)這行代碼的意思是先賦值A(chǔ)mount=123,然后判斷這個表達(dá)式是不是真值,因?yàn)榻Y(jié)果為 123,是真值,那么就做后面的。如果想讓當(dāng)Amount等于123才運(yùn)行時,應(yīng)該if(Amount=123)五、白增白減運(yùn)算符這是一類特殊的運(yùn)算符,白增運(yùn)算符+和白減運(yùn)算符-對變量的操作結(jié)果是增加1和減少1。例如:-Couter;Couter-;+Amount;Amount+;看這些例子里,運(yùn)算符在前面還是在后面對本身的影響都是一樣的,都是加1或者減1,但是當(dāng)把他們作為其他表達(dá)式的一部分,兩者就有區(qū)別了。運(yùn)算符放在變量前面,那么在運(yùn)算之前,變量先完成白增或白減運(yùn)算;如果運(yùn)算符放 在后面,那

8、么白增白減運(yùn)算是在變量參加表達(dá)式的運(yùn)算后再運(yùn)算。這樣講可能 不太清楚,看下面的例子:num1=4;num2=8;a=+num1;b=num2+;a =+num1;這總的來看是一個賦值,把+num1的值賦給a,因?yàn)榘自鲞\(yùn)算符 在變量的前面,所以num1先白增加1變?yōu)?,然后賦值給a,最終a也為5。 b=num2+;這是把num2+的值賦給b,因?yàn)榘自鲞\(yùn)算符在變量的后面,所以 先把num2賦值給b, b應(yīng)該為8,然后num2白增加1變?yōu)?。那么如果出現(xiàn)這樣的情況我們怎么處理呢?c=num1+num2;到底是c=(num1+)+num2;還是c=num1+(+num2);這要根據(jù)編譯器來決定,不同的

9、編譯器可能有不同的結(jié)果。所以我們在以后的編程當(dāng)中,應(yīng)該盡量避免 出現(xiàn)上面復(fù)雜的情況。六、復(fù)合賦值運(yùn)算符 在賦值運(yùn)算符當(dāng)中,還有一類 C/C+獨(dú)有的復(fù)合賦值運(yùn)算符。它們實(shí)際上是一 種縮寫形式,使得對變量的改變更為簡潔。Total=Total+3;乍一看這行代碼,似乎有問題,這是不可能成立的。其實(shí)還是老樣子,'='是賦值不是等于。它的意思是本身的值加3,然后在賦值給本身。為了簡化,上面的代碼也可以寫成:Total+=3;復(fù)合賦值運(yùn)算符有下列這些:符號功能+=加法賦值-=減法賦值*=乘法賦值/=除法賦值%=模運(yùn)算賦值<<=左移賦值>>=右移賦值&=位邏

10、輯與賦值|=位邏輯或賦值A(chǔ)=位邏輯異或賦值上面的十個復(fù)合賦值運(yùn)算符中,后面五個我們到以后位運(yùn)算時再說明。那么看了上面的復(fù)合賦值運(yùn)算符,有人就會問,到底Total=Total+3;與Total+=3;有沒有區(qū)別?答案是有的,對于 A=A+1,表達(dá)式A被計(jì)算了兩次,對于復(fù)合運(yùn)算符A+=1,表達(dá)式A僅計(jì)算了一次。一般的來說,這種區(qū)別對于程序的運(yùn)行沒有多大影響,但是當(dāng)表達(dá)式作為函數(shù)的返回值時,函數(shù)就被調(diào)用了兩次(以后再說明),而且如果使用普通的賦值運(yùn)算符, 也會加大程序的開銷,使效率降低。七、條件運(yùn)算符條件運(yùn)算符(?:)是C語言中唯一的一個三目運(yùn)算符,它是對第一個表達(dá)式作真/假檢測,然后根據(jù)結(jié)果返回兩

11、外兩個表達(dá)式中的一個。v表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>在運(yùn)算中,首先對第一個表達(dá)式進(jìn)行檢驗(yàn),如果為真,則返回表達(dá)式 2的值;如果為假,則返回表達(dá)式 3的值。例如:a=(b>0)?b:-b;當(dāng)b>0時,a=b;當(dāng)b不大于0時,a=-b ;這就是條件表達(dá)式。其實(shí)上面的意思就是把b的絕對值賦值給a。八、逗號運(yùn)算符在C語言中,多個表達(dá)式可以用逗號分開,其中用逗號分開的表達(dá)式的值分別結(jié)算,但整個表達(dá)式的值是最后一個表達(dá)式的值。假設(shè) b=2,c=7,d=5,a1=(+b,c-,d+3);a2=+b,c-,d+3;對于第一行代碼,有三個表達(dá)式,用逗號分開,所以最終的值應(yīng)該是最后一個表達(dá)式的值,也就是d+3 ,為8,所以a=8。對于第二行代碼,那么也是有三個表達(dá)式,這時的三個表達(dá)式為 a2=+b、c-、d+3,(這是因?yàn)橘x值運(yùn)算符比逗號 運(yùn)算符優(yōu)先

溫馨提示

  • 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

提交評論