作者sjgau (sjgau)
看板C_and_CPP
標題Re: [問題] for迴圈 和++i i++的問題
時間Sun Aug 23 09:21:15 2009
※ 引述《Waterpig (waterpig)》之銘言:
: ++i 是先將i指派為i+1後再將i+1的值傳出
int i, j;
i= 10;
j= ++i;
// i= 11, j= 11
: i++ 是先傳出i值 再指派i為i+1
int i, j;
i= 10;
j= i++;
// i= 11, j= 10
: 以上我的理解應該沒錯吧?
: 我的問題在於for迴圈
: for迴圈的流程是
: ┌──假──→離開迴圈
: │
: 進入迴圈→設定記次變數起始值→測試條件式──真─→程式區段→更新計次變數
: ↑ │
: │ │
: └──────────────┘
: 這時候 for (i=0;i<=3;++i){程式區段}
: 和 for (i=0;i<=3;i++){程式區段}
: 兩個差別在於哪?
int i, j, no;
for (i= 0, j= 0;i<= 3;j= i++) {// or j= ++i
no= no + i + j;
// print i, j, no= ???
}
// print no= ???
這樣,就有差了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.245.110.241
推 Waterpig:恩...如果i 和 j有出現在程式理會有差 如果單純計次就 08/23 09:24
→ Waterpig:沒有差別吧? 08/23 09:24
推 kameng:應該這樣說:如果是獨立一句語言的話i++;++i;沒有影響 08/23 10:25
→ kameng:但如果你有其他的東西跟他連在一起(k=i++;cout<<++i;) 08/23 10:26
→ kameng:這時候放前跟放後就會有顯著的不同 08/23 10:26