-4
這裏有兩個程序。它們都有一個函數fun(),其返回類型引用一個整數。只有兩個函數的不同之處在於,在一個函數中,x被聲明爲靜態int,而另一個函數不是。第一個問題的輸出是10,第二個問題的輸出是30.如何?這兩個程序的輸出有什麼區別,爲什麼?
程序1:
#include<iostream>
using namespace std;
int &fun()
{
int x = 10;
return x;
}
int main()
{
fun() = 30;
cout << fun();
return 0;
}
計劃2:
#include<iostream>
using namespace std;
int &fun()
{
static int x = 10;
return x;
}
int main()
{
fun() = 30;
cout << fun();
return 0;
}
第一個程序調用未定義的行爲,第二個程序沒有。 – 2013-08-01 19:04:50
什麼是未定義的行爲?你能告訴我爲什麼兩個程序的輸出有差別? – thedarkpassenger
你可以谷歌「未定義的行爲」,你會明白它。 – 2013-08-01 19:06:22