Я использую Visual С++ 2012 и компилирую из командной строки следующие файлы:
#include <stdio.h>
int main()
{
printf("%.5f", 18/4+18%4);
return 0;
}
Связывание с MSVCRT.LIB, а не LIBCMT, чтобы избежать ошибки времени выполнения R6002.
Выводимое значение составляет 0,00000 для этой программы.
Однако, если я выполняю то же самое в С++
#include <iostream>
using namespace std;
int main()
{
cout << 18/4+18%4 << endl;
return 0;
}
Теперь он выдает 6, как и должно.
Какая разница? Это касается самих языков (C vs С++) или методов вывода (cout vs printf), или это просто причуда с MSVC?