看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
akasan:i+=2不就好了唄 05/02 14:43
bleed1979:其實第2種寫法 觀念上可以再加強 雖然程式保證i為0以上 05/02 14:49
bleed1979:寫成 ( i % 2 ) != 0 較有一貫性 而非因地而異 05/02 14:50
ICECOCA:謝謝上面兩位的建議..if(舉例)其實想問的是後面continue.. 05/02 15:50
ICECOCA:第二種寫法有用到 continue 前面沒有 這樣有無多付出cost? 05/02 15:51
james732:感覺上continue; 應該會多生出一個goto... 05/02 17:10
Fenikso:也不過就多幾byte的code XD 05/02 17:40
uest:第二種是不好的coding style 容易寫出bug 請改掉 05/02 17:44
wowtiger:這真的是個好問題 有時候為了巢狀太多 想改用contiune 05/02 19:07
weiyucsie:巢狀太多... 改寫成函數阿XD 05/02 20:52
ICECOCA:我也是覺得有好多層{}用了好多很暈 所以才想到用continue 05/02 22:08
ICECOCA:只是[2]的寫法 可能會在哪些情況有BUG呢?? 05/02 22:09
ICECOCA:改寫成函數 context switch的cost 會不會更大呢? 05/02 22:11
littleshan:說老實話,我認為跟本沒差 05/02 22:58
TroyLee:我都 i & 0x01 05/05 17:49