コード スニペットの o/p:
printf("%f", 9/5);
私のLinux gcc 4.6.3(gcc myprog.cの後に./a.out):
-0.000000
codepad.org で:
2.168831
違いはなぜですか?
リンクを参照しました:なぜ printf でキャストが必要なのですか? Cでの暗黙の変換?、しかし、それを利用できませんでした。
コードパッドの実行に関する情報: C: gcc 4.1.2 フラグ: -O -fmessage-length=0 -fno-merge-constants -fstrict-aliasing -fstack-protector-all
編集:詳細:(同じプログラム内の)コードパッドでのフォローの実行用
printf("%f\n", 99/5);
printf("%f\n", 18/5);
printf("%f\n", 2/3);
printf("%f\n%f\n%f", 2, 3, 4);
printf("%f\n", 2);
o/p は
2.168831
2.168831
2.168831
0.000000
0.000000
-0.001246
-0.0018760.000000
最初の 3 つの出力は同じガベージ値です (最後の出力ではありません)。なぜだろうか。