作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] if ( a && b ) 一定會執行到b嗎?
時間Sun Oct 9 13:55:44 2011
short-circuit 是有規定的標準行為
C standard 6.5.13p4
Unlike the bitwise binary & operator, the && operator guarantees left-to-right
evaluation; there is a sequence point after the evaluation of the first operand.
If the first operand compares equal to 0, the second operand is not evaluated.
C++ standard 5.14
Unlike &, && guarantees left-to-right evaluation: the second operand is not
evaluated if the first operand is false.
所以如果你的寫法出現 bug
那有兩種可能
1. 你的 compiler 有 bug
2. 你的 code 其它地方有 bug
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.65.197
→ bleed1979:犀利! 10/09 13:57
推 weiyucsie:推一下~ 10/09 15:02
推 VictorTom:推 10/09 16:44
推 autumned:0_O 10/09 20:40
→ autumned:那看來dev真的...XD 10/09 20:40
→ littleshan:No, gcc 3.4 有提供short circuit這我很確定 10/09 22:09
→ littleshan:這算是滿基本的功能 10/09 22:09
→ VictorTom:小弟我記得至少在VC2005/2008這應該也都是ok的.... 10/09 23:07
推 iamstudent:這邊不包含一種情況,&&是用到user的自訂operator 10/09 23:28
→ iamstudent:如果是user自己寫的 operator&&,會失去這種性質 10/09 23:29
→ iamstudent:它會一定要等兩端參數都到齊 10/09 23:30
推 autumned:唔 我的話 &&是內建的 10/09 23:43
推 johnhmj:(∩_∩)這個我要推! 10/11 02:59