Re: [問題] int i,u; i<=u 與 (long)i<u 結果不同
Thank God! (& Amos XD)
經過一番努力後,我終於在自己的電腦上重現錯誤了!
刪減之後,我把程式改成目前這樣:
http://gist.github.com/406451
這支程式正確應該要輸出:
Case 1:
2147483647
Case 2:
2146483647
2146583647
2146683647
2146783647
2146883647
2146983647
2147083647
2147183647
2147283647
2147383647
2147483647
// 不重要,反正就是在迴圈裡跑了 11 次
但是目前輸出的卻是: (不一定每次都錯,有時後會執行出正確結果)
Case 1:
2147483647
Case 2:
2146483647
// 迴圈只跑第一次就離開了!
如果要讓程式執行出正確的結果,有兩個方法:
(1) 可以把 c 的初始值設為 1,
這樣就不會執行到第一筆測資
而第二筆測資就會得到正確結果!
(2) 在 26 行的 i<=u 這裡作強制轉形成 long 的動作。
以下是我的執行環境:
Kernel: 2.6.32-22-generic-pae
OS: Ubuntu 10.04 LTS
JDK: 1.6.0_20
如果有板友願意幫忙測試,
請用站內信寄給我:
(1) 執行結果正確與否
(2) 執行環境
我會整理之後貼在板上,並向 Oracle 反映。
謝謝大家收看 :)
---
我只是想寫個 ACM 而已,怎麼會搞成這樣 囧
--
◤ ◥ ◢ ◣
T$,修好它吧。 ⊙▁⊙─ ─⊙▂⊙ 碰到問題,用SoftICE就對了!
╰ ∕皿﹨ ◥皿◤ ╯
◥█◤◢ ◥ ︶◤
Lee ◤ ︶ ◥◤ ﹨▼∕◥ T$ Chen
MYTHBUGTERS ◥ ◤\◥ by dajidali
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.54.151
推
05/20 00:27, , 1F
05/20 00:27, 1F
推
05/20 00:42, , 2F
05/20 00:42, 2F
→
05/20 01:56, , 3F
05/20 01:56, 3F
推
05/20 04:21, , 4F
05/20 04:21, 4F
→
05/20 04:28, , 5F
05/20 04:28, 5F
→
05/20 04:30, , 6F
05/20 04:30, 6F
推
05/20 04:45, , 7F
05/20 04:45, 7F
→
05/20 08:58, , 8F
05/20 08:58, 8F
→
05/20 09:21, , 9F
05/20 09:21, 9F
拿了上班的機器來測
Kernel: 2.6.32-21-generic
OS: Linux Mint 9 (Ubuntu 10.04 base) (x86 32-bit)
(1)
JDK: OpenJDK 1.6.0_18
直接拿之前 compile 過的 class 執行,完全沒問題
(2)
JDK: SunJDK 1.6.0_20
無論有無重新 compile,完全沒問題....
這...(2) 沒錯聽起來還蠻恐怖的,
畢竟這軟體環境跟我在家中幾乎是差不多的。
※ 編輯: tkcn 來自: 140.122.183.199 (05/20 09:32)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 5 篇):