[問題] __int64

看板C_and_CPP (C/C++)作者 (四海‧絕蹤)時間16年前 (2009/03/14 02:33), 編輯推噓5(502)
留言7則, 6人參與, 最新討論串1/1
想請教版上的先進們 以下是我的程式碼 int void() { __int64 a = 100000000; double b = 12.345; printf("a:%lld, b:%.3f\n", a, b); printf("a/b = %.0f\n", (double)a/b); return 0; } 這樣子的結果是 a:100000000, b:-19720246487332832000000.............0 a/b = 8100445 但是如果我程式改成先印 b int void() { __int64 a = 100000000; double b = 12.345; printf("b:%.3f, a:%lld\n", b, a); printf("a/b = %.0f\n", (double)a/b); return 0; } 這樣子的結果是 b:12.345, a:100000000 a/b = 8100445 我使用的的是 Dev-C++ 4.9.9.2 請問為什麼會有這樣子的差異? 我該怎麼修正才可以讓第一種方式正確的顯示嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.57.124

03/14 02:48, , 1F
Try %lf ?
03/14 02:48, 1F

03/14 06:38, , 2F
還是一樣耶
03/14 06:38, 2F

03/14 08:31, , 3F
我用gcc測沒問題啊
03/14 08:31, 3F

03/14 09:35, , 4F
a的部份可能要用%I64d吧 前幾天我也搞出這樣的東西 Orz
03/14 09:35, 4F

03/14 09:38, , 5F
try %I64d ??
03/14 09:38, 5F

03/14 12:48, , 6F
可以了!! 謝謝樓上兩位
03/14 12:48, 6F

03/14 16:29, , 7F
是個 msvcrt.dll 受害者
03/14 16:29, 7F
文章代碼(AID): #19kgSNbM (C_and_CPP)
文章代碼(AID): #19kgSNbM (C_and_CPP)