C++中是int函数但是没有return会怎么样?

例如这个程序:
#include<iostream>
using namespace std;

int ts(int a,int b)
{
if(a==b)
return 4;
}

int main()
{
cout<<ts(3,2);
}

为什么最后的结果是3?

这种情况,函数的if语句块里有return,编译器没有报错,我想知道当if条件没有满足的时候,return的到底是什么?

具体返回什么,要看你的程序决定。
因为函数返回值是放在eax寄存器的,在程序中,如果有返回值,则会把返回值赋给eax。
如果没有,则会返回eax的默认值。
你的程序刚好是3,所以返回了3。但是如果程序是其他值使用了eax,则返回其他值,所以,返回值是不确定的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-17
如果main函数没有返回值,默认的应该是返回组后一条语句的值。具体记不清楚了。
main函数返回值的作用是告诉系统这个程序的执行结果,最终是正常结束,还是异常终止。
你可以通过查看程序的退出码,既main的返回值,得到程序是否正常运行结束。
第2个回答  2011-12-17
一般有返回类型的函数都要有个符合类型的return语句,显式的给出比较好,你写的ts程序在a!=b的时候是返回了3,但是这个3是没有意义的! 也不需要知道这种不确定的return,因为他没有实际意义啊~~ 还有你的main函数最好显式给出return 0.
第3个回答  2011-12-17
返回值没有意义, 返回的具体的值取决于编译器
任何"标准"没有规定的行为是不确定的
也就是你用VC编译出来结果是A 用TC编译出来结果是B
第4个回答  2011-12-17
当两数不相等时:
#include<iostream>
using namespace std;
int ts(int a,int b)
{
if(a==b)
return a;
else
cout<<"两值不同"<<endl;
}

int main()
{
ts(3,4);
return 0;
}

运行结果:
两值不同
Press any key to continue
(2)当两数相等时:
#include<iostream>
using namespace std;
int ts(int a,int b)
{
if(a==b)
{
cout<<a;
return a;
}
else
cout<<"两值不同"<<endl;
}

int main()
{
ts(4,4);
return 0;
}

运行结果:
4Press any key to continue
一般不要在主函数直接输出,否则没法输出你想要的结果:
#include<iostream>
using namespace std;
int ts(int a,int b)
{
if(a==b)
return a;
else
cout<<"两值不同"<<endl;
}

int main()
{
cout<<ts(4,3);
return 0;
}

并且,int,double型的必须有返回值,函数定义,仔细看一下课本。void不需要返回值。
运行结果:
两值不同
4701840Press any key to continue
相似回答