打印

为啥return 语句 不执行?

[复制链接]
2921|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nj21ic|  楼主 | 2011-12-27 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义了一个  无返回值 函数
    void a()
      {
           if(A==true)
            return;
      }

无论是跟踪还是正常运行,发现 A即使等于 true 时 ,return 也不执行;
如果 把这个函数 改成有返回值
                int a()
              {
                   if(A==true)
                       return 0;
              }
无论是跟踪还是正常运行,发现 A如果等于 true 时 ,return 0 可以被执行;
  这到底是为啥?

相关帖子

沙发
delin17| | 2011-12-27 16:14 | 只看该作者
直接被优化,无视..
return和直接到下面函数返回,有区别嘛?

使用特权

评论回复
板凳
nj21ic|  楼主 | 2011-12-27 16:26 | 只看该作者
有区别的,return 后面 还有些语句,我没有写出来。咋办啊

使用特权

评论回复
地板
ayb_ice| | 2011-12-27 16:39 | 只看该作者
{
}  // 自动返回了

使用特权

评论回复
5
nj21ic|  楼主 | 2011-12-27 16:47 | 只看该作者
是不是 我的 堆栈 出错了???

使用特权

评论回复
6
nj21ic|  楼主 | 2011-12-27 16:48 | 只看该作者
不是的 ,它是跳过了 判断语句 ,直接执行 return 后面的 语句了。我没写出来的

使用特权

评论回复
7
wangjun403| | 2011-12-27 17:24 | 只看该作者
你定义的是个无返回值的函数

使用特权

评论回复
8
NE5532| | 2011-12-27 21:35 | 只看该作者
呵呵,确实。楼主用的编译器比较聪明的说。

使用特权

评论回复
9
a41197527| | 2011-12-28 00:48 | 只看该作者
怎么 弄积分啊?

使用特权

评论回复
10
好!不走调| | 2011-12-28 13:47 | 只看该作者
是不是函数没有返回值,就不执行这条语句??

使用特权

评论回复
11
delin17| | 2011-12-30 12:56 | 只看该作者
无语,这个问题还没搞明白..他执行return和跳到函数结尾有什么区别呢,都是返回。
所以编译器自动优化了,减少代码量。
有返回值的话,两条语句就不一样了。所以不会跳到最后。
实在不行,你看一下他编译出来的汇编你就明白了。

使用特权

评论回复
12
lxyppc| | 2011-12-30 13:24 | 只看该作者
本帖最后由 lxyppc 于 2011-12-30 13:25 编辑

被优化了,编译器很"聪明"的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

315

帖子

5

粉丝