剛寫程式的時候

應該搞不懂

i++ 跟++i 到底哪裡不同

不是一樣都是遞增1嗎?(i=i+1)

其實兩個是不同的

一個是先做(++i)

一個是後做(i++)

然後就會問 先做跟後做有什麼不同?

主要是差別在Compiler在讀取時順序不同 所以就會有執行上的差別


講這麼一堆應該還是聽得霧煞煞的吧

所以還是要老套一下

用一下程式

#include<iostream>

using namespace std;

int main()
{
int i=1; //先做i++
cout<<"1:"<<i++<<endl;
cout<<"2:"<<i<<endl;

cout<<"=============="<<endl;

i=1; //數值歸回1 然後進行++i
cout<<"3:"<<i<<endl;
cout<<"4:"<<++i<<endl;
cout<<"5:"<<i<<endl;

return 0;
}
其結果

1:1
2:2
==============
3:1
4:2
5:2

有沒有發現什麼不同?

 

簡單的說
cout<<i++;

Compiler會先執行(畫底線的部分)
cout<<i++;

然後才執行(畫底線的部分)
cout<<i++;

所以是

先顯示 i 才進行 i++


哪如果是
cout<<++i;

則Compiler會先執行(畫底線的部分)
cout<<++i;

結果他發現了"++"

因為他不能直接顯示"++"

所以他就繼續讀取後面的東西(畫底線的部分)
cout<<++i;

結果他發現了"++i"

但也因為他不能直接顯示"++i"

所以就先將"++i"進行處理

(此時i已經遞增)

所以

其結果會發現

cout<<++i;

他會直接顯示已經遞增過的數值

arrow
arrow
    全站熱搜

    JL8051 發表在 痞客邦 留言(0) 人氣()