作者dadai03 (四海‧絕蹤)
看板C_and_CPP
標題[問題] __int64
時間Sat Mar 14 02:33:58 2009
想請教版上的先進們
以下是我的程式碼
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
1F:推 xam:Try %lf ? 03/14 02:48
2F:→ dadai03:還是一樣耶 03/14 06:38
3F:推 xsonic:我用gcc測沒問題啊 03/14 08:31
4F:推 aecho:a的部份可能要用%I64d吧 前幾天我也搞出這樣的東西 Orz 03/14 09:35
5F:推 jtmh:try %I64d ?? 03/14 09:38
6F:→ dadai03:可以了!! 謝謝樓上兩位 03/14 12:48
7F:推 wowtiger:是個 msvcrt.dll 受害者 03/14 16:29