我正在使用 Visual C++ 2012 并从命令行编译以下文件:
#include <stdio.h>
int main()
{
printf("%.5f", 18/4+18%4);
return 0;
}
与 MSVCRT.LIB 而不是 LIBCMT 链接以避免运行时错误 R6002。
该程序的输出值为 0.00000。
但是,如果我在 C++ 中执行完全相同的操作
#include <iostream>
using namespace std;
int main()
{
cout << 18/4+18%4 << endl;
return 0;
}
现在,它打印出 6,就像它应该的那样。
有什么不同?是与语言本身(C 与 C++)还是输出方法(cout 与 printf)有关,还是只是 MSVC 的一个怪癖?