Re: [問題] if ( a && b ) 一定會執行到b嗎?
※ 引述《yoco315 (眠月)》之銘言:
※ 引述《autumned (autumned)》之銘言:
: 問題(Question):
: 我的程式碼裡有一段 是
: if ( a && b )
標準有保證這個 short cut,
除了一種狀況以外:
如果 && 是 overloaded operator。
那左右兩邊都會被 evaluate。
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.235.165.45
→
10/10 10:38,
10/10 10:38
推
10/10 11:41,
10/10 11:41
→
10/10 11:43,
10/10 11:43
推
10/10 13:36,
10/10 13:36
→
10/10 13:36,
10/10 13:36
→
10/10 13:37,
10/10 13:37
→
10/10 13:38,
10/10 13:38
http://codepad.org/ZoJA4J5D
bug是出現在min_heapify的部分
(line 211-212 , 216-217)
使用到的macro 是 line 6,7,9
#define left(i) 2*i
#define right(i) 2*i+1
#define lessthan(a,b) (data[a].occur < data[b].occur) || (data[a].occur ==
data[b].occur && store[a] > store[b])
if( l <= last && lessthan(l,a))
我一開始是寫成這樣 我測最小的input 檔 沒有問題 但是後面的input就會crash
其中 last 是該陣列的長度-1 a是目前要heapify的元素
我crash時的測資 array總共從0到2004 共2005個值
所以last是2004 然後a是2003
所以l是4006 會超過陣列大小 但是l<= last為false 理當會避免lessthan(l,a)執行?
後來改成像現在這樣
if( l <= last )
if(lessthan(l,a))
就都沒問題了...
所以比較可能是什麼狀況呢@@還是其實我程式有bug
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.111.3
→
10/10 23:15, , 1F
10/10 23:15, 1F
→
10/10 23:18, , 2F
10/10 23:18, 2F
推
10/10 23:18, , 3F
10/10 23:18, 3F
→
10/10 23:19, , 4F
10/10 23:19, 4F
→
10/10 23:19, , 5F
10/10 23:19, 5F
→
10/10 23:19, , 6F
10/10 23:19, 6F
→
10/10 23:20, , 7F
10/10 23:20, 7F
→
10/10 23:20, , 8F
10/10 23:20, 8F
→
10/10 23:20, , 9F
10/10 23:20, 9F
→
10/10 23:21, , 10F
10/10 23:21, 10F
→
10/10 23:24, , 11F
10/10 23:24, 11F
→
10/10 23:24, , 12F
10/10 23:24, 12F
推
10/10 23:25, , 13F
10/10 23:25, 13F
→
10/10 23:37, , 14F
10/10 23:37, 14F
→
10/10 23:39, , 15F
10/10 23:39, 15F
→
10/10 23:39, , 16F
10/10 23:39, 16F
推
10/11 00:27, , 17F
10/11 00:27, 17F
→
10/11 03:09, , 18F
10/11 03:09, 18F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):