mrzoro67 发表于 2014-2-20 07:59:50

C中缺省返回值类型不是默认返回int型么,那为啥有些程序不写return也一样正常运行

本帖最后由 mrzoro67 于 2014-2-20 12:16 编辑

rt
C中缺省返回值类型不是默认返回int型么,那为啥有些程序不写return也一样正常运行
我貌似没说清,就是有人写程序:
main()
{
       xxxx
       xxxx
      //没有return
}
缺省返回值是Int型的 所以上面那程序应该有return啊,可是实际上不写return也能正常运行,为啥?

zhaopengfei 发表于 2014-2-20 08:28:11

默认返回的int型就是 1和0啊,代表运行成功或者失败,你写个return是要干什么?这个写不写都没关系的。

oggplay 发表于 2014-2-20 09:22:55

概念:return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。

  return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

  如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

じO-联合 发表于 2014-2-20 09:40:06

我觉得那可能 函数返回值吧 。有的main函数 是 void main 估计是不需要return了吧

g135176 发表于 2014-2-25 07:47:42

不知道我也是刚刚学

枫界易城 发表于 2014-2-25 12:04:29

我绝得有写返回值的思维比较严谨,如果你没写返回值的话,有时候还会出现警告(不同编译器不同)

恒信网络科技 发表于 2014-2-25 12:49:41

你这个是相当于void man() 反回为空所以不用return 了。带反回的比如:int main() 这样才是反回整形

mrzoro67 发表于 2014-2-25 17:24:48

恒信网络科技 发表于 2014-2-25 12:49 static/image/common/back.gif
你这个是相当于void man() 反回为空所以不用return 了。带反回的比如:int main() 这样才是反回整形

在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
这是void的百度百科里头写的。

ヾ_浪淘沙シ 发表于 2014-2-25 17:52:31

我觉得返回的是int型数据,而int值为无意义值,即内存中的垃圾数据,你可以定义一个无返回的fun()函数,cout<<fun();会发现,是一串数字,,,函数无返回类型是能运行的,像C++中的构造函数和析构函数,都是无返回类型的,。。。。

mrzoro67 发表于 2014-2-25 17:57:05

本帖最后由 mrzoro67 于 2014-2-25 17:58 编辑

ヾ_浪淘沙シ 发表于 2014-2-25 17:52 static/image/common/back.gif
我觉得返回的是int型数据,而int值为无意义值,即内存中的垃圾数据,你可以定义一个无返回的fun()函数,cou ...
正解。。。 能不能推荐一篇好的讲堆栈的文章

一缕忧伤 发表于 2014-2-25 18:52:32

关于函数的返回值,我还真没有这么细致的想过。
我知道的是,汇编里,返回值在寄存器eax中。如果是有返回值的函数,retn前有明显的对eax赋值的操作,比如 mov eax,1这样一般是bool类型函数,返回true。有些分支上会有 xor eax,eax这样对eax清零,就说明从这里返回,函数执行失败,返回false。
如果是没有返回值的函数,不会在返回前对eax寄存器进行设置。我感觉应该是,不管函数有没有返回值,都会把eax寄存器的值作为返回值来处理。只不过返回void的函数,这个eax是无效值。

未闻丶花名 发表于 2014-2-25 21:50:13

路过看看= =!
页: [1]
查看完整版本: C中缺省返回值类型不是默认返回int型么,那为啥有些程序不写return也一样正常运行