作者ICECOCA (unknow)
看板C_and_CPP
標題Re: [問題] 關於i++和 ++i有什麼不同
時間Sat May 2 14:35:40 2009
※ 引述《carlcarl (carl)》之銘言:
: 意思大概是這樣吧 不知道有沒有講錯= =a
: i++ function
: {
: temp = i;
: i = i + 1;
: return temp;
: }
: ++i function
: {
: i = i + 1;
: return i;
: }
: 所以i++並不是在給值完才做+1的動作
: i++和++i都是在一開始就做+1的動作
: 但是i++是要回傳+1之前的值
: 所以需要一個temp值來存
不好意思 借題問一下
像說for裡頭 的兩種寫法 如下
[1]
for(int i=0;i<100;i++){
if(i%2==0){
//do something...
}
}
[2]
for(int i=0;i<100;i++){
if(i%2==1){continue;}
//do something...
}
這兩種寫法 有一樣的結果 不知道哪一種比較好 單純看高興 還是
實際上運作有像 ++i 與 i++ 不同的cost呢?
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.163.14
1F:→ akasan:i+=2不就好了唄 05/02 14:43
2F:→ bleed1979:其實第2種寫法 觀念上可以再加強 雖然程式保證i為0以上 05/02 14:49
3F:→ bleed1979:寫成 ( i % 2 ) != 0 較有一貫性 而非因地而異 05/02 14:50
4F:→ ICECOCA:謝謝上面兩位的建議..if(舉例)其實想問的是後面continue.. 05/02 15:50
5F:→ ICECOCA:第二種寫法有用到 continue 前面沒有 這樣有無多付出cost? 05/02 15:51
6F:→ james732:感覺上continue; 應該會多生出一個goto... 05/02 17:10
7F:推 Fenikso:也不過就多幾byte的code XD 05/02 17:40
8F:推 uest:第二種是不好的coding style 容易寫出bug 請改掉 05/02 17:44
9F:推 wowtiger:這真的是個好問題 有時候為了巢狀太多 想改用contiune 05/02 19:07
10F:→ weiyucsie:巢狀太多... 改寫成函數阿XD 05/02 20:52
11F:→ ICECOCA:我也是覺得有好多層{}用了好多很暈 所以才想到用continue 05/02 22:08
12F:→ ICECOCA:只是[2]的寫法 可能會在哪些情況有BUG呢?? 05/02 22:09
13F:→ ICECOCA:改寫成函數 context switch的cost 會不會更大呢? 05/02 22:11
14F:推 littleshan:說老實話,我認為跟本沒差 05/02 22:58
15F:推 TroyLee:我都 i & 0x01 05/05 17:49