如果我有這樣的功能:功能不使用回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 2014-09-06 08:43:31
它是[* undefined behavior *](http://en.wikipedia.org /維基/ Undefined_behavior)。 – 2014-09-06 08:46:04