6.9.1 Определения функций
...
12 Если достигнут <strong>}</strong>
, который завершает функцию, и вызывающая сторона использует значение вызова функции,поведение не определено.
Проще говоря, поведение, которое вы видите, чисто случайное. Нет веской причины, по которой вы должны получать этот конкретный результат или любой другой.
Undefined означает, что код ошибочен, но ни компилятор, ни среда выполнения не требуют его обработки в любомопределенный способ. Вероятно, в вашем случае происходит то, что регистр, используемый для возврата значения из функции, также используется для хранения значения d
, но для значение не может быть истинным. Если вы измените код, вы можете получить другой результат.