作者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