C中缺省返回值类型不是默认返回int型么,那为啥有些程序不写return也一样正常运行
本帖最后由 mrzoro67 于 2014-2-20 12:16 编辑rt
C中缺省返回值类型不是默认返回int型么,那为啥有些程序不写return也一样正常运行
我貌似没说清,就是有人写程序:
main()
{
xxxx
xxxx
//没有return
}
缺省返回值是Int型的 所以上面那程序应该有return啊,可是实际上不写return也能正常运行,为啥?
默认返回的int型就是 1和0啊,代表运行成功或者失败,你写个return是要干什么?这个写不写都没关系的。 概念:return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。 我觉得那可能 函数返回值吧 。有的main函数 是 void main 估计是不需要return了吧 不知道我也是刚刚学 我绝得有写返回值的思维比较严谨,如果你没写返回值的话,有时候还会出现警告(不同编译器不同) 你这个是相当于void man() 反回为空所以不用return 了。带反回的比如:int main() 这样才是反回整形 恒信网络科技 发表于 2014-2-25 12:49 static/image/common/back.gif
你这个是相当于void man() 反回为空所以不用return 了。带反回的比如:int main() 这样才是反回整形
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
这是void的百度百科里头写的。 我觉得返回的是int型数据,而int值为无意义值,即内存中的垃圾数据,你可以定义一个无返回的fun()函数,cout<<fun();会发现,是一串数字,,,函数无返回类型是能运行的,像C++中的构造函数和析构函数,都是无返回类型的,。。。。 本帖最后由 mrzoro67 于 2014-2-25 17:58 编辑
ヾ_浪淘沙シ 发表于 2014-2-25 17:52 static/image/common/back.gif
我觉得返回的是int型数据,而int值为无意义值,即内存中的垃圾数据,你可以定义一个无返回的fun()函数,cou ...
正解。。。 能不能推荐一篇好的讲堆栈的文章 关于函数的返回值,我还真没有这么细致的想过。
我知道的是,汇编里,返回值在寄存器eax中。如果是有返回值的函数,retn前有明显的对eax赋值的操作,比如 mov eax,1这样一般是bool类型函数,返回true。有些分支上会有 xor eax,eax这样对eax清零,就说明从这里返回,函数执行失败,返回false。
如果是没有返回值的函数,不会在返回前对eax寄存器进行设置。我感觉应该是,不管函数有没有返回值,都会把eax寄存器的值作为返回值来处理。只不过返回void的函数,这个eax是无效值。 路过看看= =!
页:
[1]