두 가지 프로그램이 있습니다. 둘 다 함수 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;
}
첫 번째 프로그램은 정의되지 않은 동작을 호출하고 두 번째 프로그램은 정의되지 않은 동작을 호출합니다. –
정의되지 않은 동작은 무엇입니까? 왜 두 프로그램의 출력 차이가 나는지 말해 줄 수 있습니까? – thedarkpassenger
Google에 "정의되지 않은 동작"을 적용하면 이해할 수 있습니다. –