作者Fenikso (我是蜜蜂~)
看板C_and_CPP
标题Re: [问题] 新手十诫疑问
时间Wed Feb 4 20:27:56 2009
※ 引述《cfbbq (CF)》之铭言:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 125.224.150.217
: → james732:应该就是不要在同一行里面对一个变数又改又读的意思...? 02/04 18:10
: → cfbbq:我知道,但是我觉得没错阿,只要不要<<i++ + i;这种就好吧? 02/04 18:13
: → cfbbq:<<i++<<i;这不是一个运算是阿! 02/04 18:14
: 推 ledia:<< 也是运算子呀 02/04 18:27
: 推 LPH66:问题如同前几篇 i++结算的时间不确定 02/04 18:33
: → LPH66:虽然顺序是由左到右 (<<是左结合) 但i++却不确定会何时结算 02/04 18:33
: 推 StubbornLin:http://0rz.tw/d74Qx 02/04 19:17
: → cfbbq:我的疑问是:cout<<i++<<i;跟cout<<i++;cout<<i;似乎等於? 02/04 19:45
: → akasan:表面上一样而已cout<<i++;cout<<i;会保证其求值顺序 02/04 20:14
: → akasan:cout<<i++<<i;则是无法确定到底是i先求值还是i++先求值 02/04 20:15
其实可以 这边是特例..
function call之前有sequence point
这边的cout<<i++<<i等价於cout.operator<<(i++).operator<<(i)
可以保证i++先被evaluate, 而且在eval第二个i之前加一
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.156.17
1F:推 cfbbq:先谢谢。可以给我不是特例的吗?<<i++<<i;的特例, 02/04 20:30
2F:→ cfbbq:非<<i++ + i; 02/04 20:30
3F:→ Fenikso:就.. a<<i++<<i a是个int 02/04 20:31
4F:推 legendmtg:有=的运算 02/04 20:31
5F:推 cfbbq:糟糕 我还是不懂.. 02/04 20:35
6F:→ cfbbq:新手十诫第九项後半部的错误例子有举错吗?我是不懂他例子想 02/04 20:38
7F:→ cfbbq:表达什麽,不是错误跟正确是一样的吗? 02/04 20:38
我觉得他的重点是"不管什麽场合都不要这样写"
只是刚好举了一个保证不会错的例子(汗
※ 编辑: Fenikso 来自: 122.116.156.17 (02/04 20:39)
8F:推 cfbbq:哈,你一定觉得我很烦,辛苦你了,3Q! 02/04 20:41
9F:→ Fenikso:不会啦 有动脑想是好事XD 02/04 20:42