C語言簡明講解操作符++和_第1頁
C語言簡明講解操作符++和_第2頁
C語言簡明講解操作符++和_第3頁
C語言簡明講解操作符++和_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

第C語言簡明講解操作符++和目錄一、++與--操作符的本質(zhì)二、++與--操作符使用分析三、小結

一、++與--操作符的本質(zhì)

++和--操作符對應兩條匯編指令

前置

變量自增(減)1取變量值

后置

取變量值變量自增(減)1

下面看一段神奇的代碼:

#includestdio.h

intmain()

inti=0;

intr=0;

r=(i++)+(i++)+(i++);

printf("i=%d\n",i);

printf("r=%d\n",r);

r=(++i)+(++i)+(++i);

printf("i=%d\n",i);

printf("r=%d\n",r);

return0;

}

在VS2012中,它的運行結果如下:

在gcc編譯器中,它的運行結果如下:

這是由于不同編譯器對++和--的相對哦執(zhí)行次序不一樣。

二、++與--操作符使用分析

C語言中只規(guī)定了++和--對應指令的相對執(zhí)行次序++和--對應的匯編指令不一定連續(xù)運行在混合運算中,++和--的匯編指令可能被打斷執(zhí)行

++和--參與混合運算結果是不確定的。

筆試面試中的奇葩題

貪心法:++,--表達式的閱讀技巧

編譯器處理的每個符號應該盡可能多的包含字符編譯器以從左向右的順序一個一個盡可能多的讀入字符當讀入的字符不可能和已讀入的字符組成合法符號為止

下面看一段代碼:

#includestdio.h

intmain()

inti=0;

intj=++i+++i+++i;

inta=1;

intb=4;

intc=a+++b;

int*p=

b=b/*p;

printf("i=%d\n",i);

printf("j=%d\n",j);

printf("a=%d\n",a);

printf("b=%d\n",b);

printf("c=%d\n",c);

return0;

}

運行后編譯器會報錯:

這行代碼為什么報錯呢?intj=++i+++i+++i;原因就是編譯器發(fā)現(xiàn)++i后由于貪心,會繼續(xù)往下找,發(fā)現(xiàn)++i+后編譯器覺得符合語法規(guī)則,繼續(xù)往下找,當出現(xiàn)++i++時編譯器感覺不對,開始計算,就變成1++,這是不合法的,所以編譯器就會報錯。

空格可以作為C語言中一個完整符號的休止符編譯器讀入空格后立即對之前讀入的符號進行處理。

所以下面這么寫就可以:

#includestdio.h

intmain()

inti=0;

intj=++i+++i+++i;

inta=1;

intb=4;

intc=a+++b;

int*p=

b=b/*p;

printf("i=%d\n",i);

printf("j=%d\n",j);

printf("a=%d\n",a);

printf("b=%d\n",b);

printf("c=%d\n",c);

return0;

}

編譯結果如下:

三、小結

++和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論