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