问题描述
- 比较两个相等的函数里,当给两个不相等参数时,系统为什么会自动返回x的值呢??
- int fun(int aint b)
{
if(a == b)
{
return a;
}
}void main()
{
int x = 20y =10;
int z = fun(xy);
cout<<z<<endl;
}
fun函数里,没有给出,当两个参数不相等的返回情况,那么系统为什么会自动返回x的值呢??请各位大神帮帮我
解决方案
由于不相等时没有给定返回值,所以将返回栈顶值
如果此时栈是空的,则返回最后一次出栈是的值
而函数的参数是逆序入栈的
解决方案二:
这只是巧合,其实系统会随机返回一个值。你的编译器可以把栈顶的x值作为返回值给你了,想我的系统(C++ 4.2.1 Apple LLVM 6.0)就返回了一个32767.
解决方案三:
没有指定返回值,也是会有返回值的。
有一个分支没有返回,编译时会有警告的。假如没有返回,在 main 中的表达式就不会成立,也应该是编译的错误。所以编译器为了避免出现这样的情况,在没有返回值的分支上会返回默认值。
解决方案四:
按照我的逻辑分析这段代码会报错,至少用myeclipse或者eclipse会报错,fun方法声明 的返回值是int的,但是你的方法有可能没返回值,C++的编译器是什么我不知道
解决方案五:
要就这种不符合编程规则的东西没有多大意义,本来这样的代码就是有隐患的,知道避免写这样的代码就行了
时间: 2024-10-28 19:09:27