我有两个叫main的小函数。以下是程序
int fun1(int x)
{
int s;
s=8;
}
int fun2(int x)
{
int s;
s=x*4;
}
int main(int argc, char *argv[])
{
int n=2;
cout << fun1(n)<<endl;
cout<<fun2(n)<<endl;
return 0;
}
1.fun1()函数使用arguement x调用但没有使用x变量完成操作。 所以在输出“cout&lt;&lt; fun1() - 我得到输出2”n的现值。
2.fun2()函数使用arguement x调用并在操作“s = x * 4”中使用它 并在输出“cout&lt;&lt; fun2()” - 我得到输出8 - “2 * 4”。
我没有将任何引用或指针值传递给仍然获得两个不同输出的函数。 想知道在两个不同的函数情况下堆栈展开是如何不同的。
答案 0 :(得分:1)
尽管有返回类型,但您的函数不会返回任何内容。这是未定义的行为。这个问题/答案提供了更多详细信息Function with missing return value, behavior at runtime。
当您调用未定义的行为时,您的显示输出基本上没有意义。