Re: [問題] 關於i++和 ++i有什麼不同

看板C_and_CPP (C/C++)作者 (unknow)時間16年前 (2009/05/02 14:35), 編輯推噓5(5010)
留言15則, 10人參與, 最新討論串5/5 (看更多)
※ 引述《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

05/02 14:43, , 1F
i+=2不就好了唄
05/02 14:43, 1F

05/02 14:49, , 2F
其實第2種寫法 觀念上可以再加強 雖然程式保證i為0以上
05/02 14:49, 2F

05/02 14:50, , 3F
寫成 ( i % 2 ) != 0 較有一貫性 而非因地而異
05/02 14:50, 3F

05/02 15:50, , 4F
謝謝上面兩位的建議..if(舉例)其實想問的是後面continue..
05/02 15:50, 4F

05/02 15:51, , 5F
第二種寫法有用到 continue 前面沒有 這樣有無多付出cost?
05/02 15:51, 5F

05/02 17:10, , 6F
感覺上continue; 應該會多生出一個goto...
05/02 17:10, 6F

05/02 17:40, , 7F
也不過就多幾byte的code XD
05/02 17:40, 7F

05/02 17:44, , 8F
第二種是不好的coding style 容易寫出bug 請改掉
05/02 17:44, 8F

05/02 19:07, , 9F
這真的是個好問題 有時候為了巢狀太多 想改用contiune
05/02 19:07, 9F

05/02 20:52, , 10F
巢狀太多... 改寫成函數阿XD
05/02 20:52, 10F

05/02 22:08, , 11F
我也是覺得有好多層{}用了好多很暈 所以才想到用continue
05/02 22:08, 11F

05/02 22:09, , 12F
只是[2]的寫法 可能會在哪些情況有BUG呢??
05/02 22:09, 12F

05/02 22:11, , 13F
改寫成函數 context switch的cost 會不會更大呢?
05/02 22:11, 13F

05/02 22:58, , 14F
說老實話,我認為跟本沒差
05/02 22:58, 14F

05/05 17:49, , 15F
我都 i & 0x01
05/05 17:49, 15F
文章代碼(AID): #19--c_gt (C_and_CPP)
文章代碼(AID): #19--c_gt (C_and_CPP)