Если у меня есть функция, как это:Функция типа междунар не используется возвратный C++
int addNumbers(int x, int y)
{
return x + y;
}
и если я использую его в качестве такового:
cout << addNumbers(4, 5) << endl;
Он вернется и печать 9
. Используя ту же самую линию cout
, если я прокомментирую или удалю возврат в addNumbers
, он вернется и распечатает 1
. Если бы я это сделать:
int addNumbers(int x, int y)
{
int answer = x + y;
//return x + y;
}
Он автоматически вернется и печать 9
, без меня, используя возврат. Аналогично, я могу написать int answer = x
; и он вернется 4
. Я также могу написать следующее:
int addNumbers(int x, int y)
{
int answer = x;
answer = 1;
//return x + y;
}
, и она будет возвращать 4.
Что именно возвращается, и почему? Он возвращает только что-то, отличное от 1, когда я использую переменные параметра, но он не возвращает ответ переменной, как показано в последнем примере, потому что я изменил его на 1, и он по-прежнему возвращает значение x (4)
.
это UB, он возвращает это, потому что его то, что происходит в стеке, построено для x64, и это будет «случайное» значение. – paulm
Это [* неопределенное поведение *] (http://en.wikipedia.org/вики/Undefined_behavior). –