Рассмотрим следующий код:
float d = 3.14f;
int i = 1;
auto sum = d + i;
Согласно cppreference.com, i следует преобразовать в float, когда он добавлен в d. Однако, когда я действительно запускаю код, я считаю, что sum равно 4. Почему это происходит?
Интересно, что когда я явно помещал свой компилятор в режим C11, я обнаружил, что sum равен 4.14. Какие правила изменяет стандарт C11, влияющий на результат?
Что произойдет, если я скомпилировал тот же код с помощью компилятора С++?