Почему это работает, когда в функции отсутствует оператор возврата в конце? [Дубликат]
На этот вопрос уже есть ответ здесь:
Почему этот фрагмент кода C ++ компилируется (не-void функция не возвращает значение) [duplicate] 7 ответовЯ изучаю C ++. Приведенные ниже коды смутили меня:
int test_return(int a)
{
for (int i = 40; i < 44; i++)
{
if (i == a)
{
cout << "return here with i: " << i << endl;
, return 59;
}
}
}
int main()
{
cout << "in main: " << test_return(61) << endl;
return 0;
}
Я знаю, что мне не хватает оператора возврата в конце функцииtest_return
.
Но компилятор не сообщает об ошибке, и он работает, когда выполняется.
Поэтому я выбираю некоторые конкретные цифры, такие как40
,44
,59
,61
чтобы увидеть, какая функцияtest_return
выберу, чтобы вернуться.
Я пробовал несколько раз, выход всегда такой:
in main: 44
Кажется, что функцияtest_return
вернул интi
до того, как закончилось заявление.
Мой вопрос:
Это законно?
Как это работает?
Обновить:
Я добавляю эти коды в конце функцииtest_return
:
int i = 100;
int square = i * i;
Выходит:
in main: 10000
Спасибо за @Vlad от московского ответа! Это помогает.