C_and_CPP 板


LINE

謝謝回應 本人回應太慢 對不起 我也不是很有把握 我用內建的IDE 測了不同的 data type, int, float, double 只有double 20個時 發生問題 ( 測試個數 5, 6, 8, 10, 20) 我把code貼上來 請各位指教一下 typedef struct _record_ { double value; int position; } s_reorder; int compare_record( const void *arg1, const void *arg2 ) { return (int) ( (*(s_reorder *)arg2).value> (*(s_reorder *)arg1).value); } int main(void) { // reorder 是一維陣列 , size= m> 20, 沒有相同的element qsort( (void *)( reorder), (size_t) m, sizeof( s_reorder), compare_record ); } 我用相同的資料結構 自己寫一個 _qsort_ 沒再多呼叫compare 是正確的結果 我記得當初debug時 有把structure 拿掉 還是相同的情形 一兩個月前了 又因為自己寫了_qsort_也還好 就沒再多做實驗 也有些情況沒記那麼清楚 好像 30, 40, 50 個double 都有錯 最近程式告一段落 才想來問看看... 以下是錯的結果 0 121.714397 1 -0.785398 2 -2.520560 3 -0.791447 4 -0.855704 5 -1.695513 6 -1.455394 7 -1.857532 8 -2.066145 9 -3.284361 10 -2.275599 11 -3.423782 12 -3.641737 13 -5.068104 14 -6.149263 15 -7.107637 16 -10.794325 17 -15.191077 18 -17.749103 19 -35.001716 謝謝囉 ※ 引述《zhim (zhim)》之銘言: : 標題: [閒聊] VC2005 的 qsort 好像有bug... : 時間: Wed Dec 2 06:08:56 2009 : : 用VC2005內建的qsort : : 幫20個 double排序 好像會得出錯的順序 : : 不知是否有人有相同的經驗? : : 還是MS 已經有patch了... : : : 希望 patch != VC2008 .... : : : -- :



※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.115.51.64 : → sunneo:你有在別的IDE測試嗎 12/02 08:38 : 推 LPH66:你是怎麼寫的...? 12/02 08:39 : 推 ledia:通常是自己寫錯 12/02 09:18 : → ledia:(這裡的通常, 大約是 99.99%) 12/02 09:18 : → VictorTom:寫程式結果有錯都不會先懷疑自己寫錯就覺得是環境給的 12/02 09:30 : → VictorTom:lib有錯嗎Orz 這麼有自信的話直接貼code來看就知道了XD 12/02 09:30 : → tomnelson:(99.9% + 0.1%)寫錯... 12/02 10:51 : → tomnelson:我敢猜問題出在那個傳入qsort的cmpfunc(比較函式)... 12/02 10:55 : → tomnelson:題外話,寫程式出問題就怪罪到IDE或compiler,不是好事,雖 12/02 10:57 : → tomnelson:然這種事也真的有,但是在已經成熟而且在市面上的產品上 12/02 10:58 : → tomnelson:來說,真的少見,頂多是在compiler最佳化那邊出問題,這種 12/02 11:00 : → tomnelson:內建functions出問題的,還沒遇過. 12/02 11:00 : → tomnelson:請參考別人"犯錯心得"如下兩網址: 12/02 11:12 : → tomnelson:http://ppt.cc/kPN0 12/02 11:13 : → tomnelson:http://ppt.cc/Ctst 12/02 11:13 : 推 ledia:我隔空抓藥一下, 他大概回傳 *(double*)x-*(double*)y; 12/02 13:22 : → ledia:當 x, y 差距太小, 回傳又 cast 成 int 就會變為 0 ... 12/02 13:22 : → bugmens:原po都不吭聲,大家debug倒是解的很高興 12/02 18:07 : 推 walker2009:樓上是bug, 抓到了 XD 12/02 18:44 : → sunneo:大家都講得太明了 -.- 我反倒想看看他測了幾個IDE來下結論 12/02 22:27 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.51.64
1F:推 ducksteven:http://codepad.org/uYuEtII3 12/03 05:05
2F:推 ducksteven:我在自己的電腦編譯也會跑錯,改成這樣就不會錯了 12/03 05:09
3F:→ ducksteven:http://codepad.org/TLz5KfGt 12/03 05:09
4F:→ ducksteven:上面有人提示了,因為它有 3 種 return value 12/03 05:10
5F:→ zhim:謝謝您 VC要3種value不是變慢了, 我以前用BC3都沒注意到這個 12/03 05:33
6F:推 VictorTom:果然被人抓藥抓對了, 應該回傳三態你只回傳兩態.... 12/03 09:13
7F:→ VictorTom:http://0rz.tw/tR11X 12/03 09:14
8F:→ VictorTom:只能說你以前沒遇到錯誤大概只是運氣好.... 12/03 09:15
9F:→ VictorTom:效率會不會變差要看lib內部怎麼實作, 如果它本來就需要 12/03 09:18
10F:→ VictorTom:三態你只給兩態, 結果錯了就更不用討論效率了XD 12/03 09:19
11F:→ tomnelson:哈哈哈~~~ 12/03 11:38
12F:推 ducksteven:它的定義本來就有三種回傳啊 順便告訴你我編譯器是gcc 12/03 13:36
13F:推 cplusplus:下次先看document會比較好... C的標準qsort本來就要三態 12/03 15:33
14F:→ tomnelson:"man 3 qsort" for Linux/Unix/FreeBSD and etc. ! 12/03 17:48
15F:→ sunneo:數字三態最簡單就是直接a-b了 12/03 21:52
16F:→ zhim:這樣就會發生 a-b -> 0 的 round off error 12/04 14:11
17F:→ zhim:雙態就夠了 把qsort.c 檢查 ==0 的去掉 12/04 14:14
18F:→ zhim:其他改成 bool 邏輯 12/04 14:18
19F:推 ledia:bool ? 回傳 0, 1 就是會錯呀... 12/04 14:59
20F:→ ledia:你可以只傳 -1, 1 啦, 我想沒有 0 大概不會有太大問題 12/04 14:59
21F:→ ledia:只回傳 0, 1 就註定會錯了 12/04 14:59







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP