剛寫程式的時候
應該搞不懂
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;
他會直接顯示已經遞增過的數值
這樣講應該夠詳細了吧
老話一句
不懂就問吧
應該搞不懂
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;
他會直接顯示已經遞增過的數值
這樣講應該夠詳細了吧
老話一句
不懂就問吧
文章標籤
全站熱搜

謝謝,收獲良多.
*****
*****
what if the statement is cout<2012-07-28 00:16 
Aminzai 2012-07-28 01:54
That will (i*2) then cout :)
如題.....
回饋您這方面資訊,我是從 PTT搜尋引擎的排名,看到大家推薦的內容而輾轉來到這, 不然每次看到一堆 Blog 文章,卻不知哪幾篇才是值得花時間一看的, 謝謝您用心分享的好文, 也回饋給您這實用的主題排名網站資訊,可查看與您 Blog 內容相關的排名好文,應該對寫 Blog 也有所幫助,期待您持續產出好文章 ^^ https://searchptt.cc/