Visual C++ 2012 を使用しており、コマンド ラインから次のファイルをコンパイルしています。
#include <stdio.h>
int main()
{
printf("%.5f", 18/4+18%4);
return 0;
}
ランタイム エラー R6002 を回避するために、LIBCMT ではなく MSVCRT.LIB とリンクします。
出力される値は、このプログラムでは 0.00000 です。
ただし、C ++でまったく同じことを実行すると
#include <iostream>
using namespace std;
int main()
{
cout << 18/4+18%4 << endl;
return 0;
}
これで、本来のように 6 が出力されます。
違いは何ですか?言語自体 (C と C++) または出力方法 (cout と printf) に関係しているのでしょうか、それとも MSVC の単なる癖ですか?