close

剛寫程式的時候

應該搞不懂

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
    全站熱搜
    創作者介紹
    創作者 Aminzai 的頭像
    Aminzai

    Amin's Note

    Aminzai 發表在 痞客邦 留言(5) 人氣()