Delphi的函数,在Result后还是会继续往下执行,
而C++的return后函数就跳出了,等于是Delphi的Exit;例如Delphi如下Function ABCD:Integer;
begin
  Result := 0;  //Delphi执行到这里后,还会继续往下执行的
  xxx
  xxx
  xxx
  if xxx>bbb then
  begin
    Result := 1;
    Exit;
  end;
end;例如C++如下int ABCD()
{
  return 0;  //C++执行到这里后,就不继续往下执行了,直接Exit了...
  xxx
  xxx
  xxx
  if (xxx!=qqq)
  {
    return 1;
  } 
}看明白了吗?因为学习写驱动,所以得用下C++,但是觉得C++的函数好奇怪,
难道不能像Delphi那样预先设置返回值吗(Result)?
我知道可以在函数尾部加返回值,但是我喜欢在函数入口加返回值,
因为函数中间有时候直接EXIT了.

解决方案 »

  1.   

    你换个思路想想 c不是一样可以这样做吗, 你在里面定义个r变量, 无论如何都使用return r 的方式返回, 那么程序开始的时候你就可以设定r值, 中间也可以随便改r的值, 但是任何调用return的地方都可以直接使用r来返回
      

  2.   

    传送门开的不错啊。原来Delphi这可以这样啊,我也刚知道。
    C++可以这样
    int ABCD()
    {
      if(xxx!=qqq)
      {
        return 0; //硬要一开始就返回,可以做判断。
      }
      xxx
      xxx
      xxx
      if (xxx!=qqq)
      {
        return 1;
      }  
       
      return 2;
    }
      

  3.   

    楼主喜欢开始就加返回值的话int ABCD()
    {
      int ret = 0;
      if(xxx!=qqq)
      {
        ret = xxx;
        return ret; //硬要一开始就返回,可以做判断。
      }
      xxx
      xxx
      xxx
      if (xxx!=qqq)
      {
        ret = yyy;
        return ret;
      }   
        
      return ret;
    }这样楼主就开心了吧
      

  4.   

    int ABCD()
    {
      int ret = 0;
      if(xxx!=qqq)
      {
      ret = xxx;
      return ret; //硬要一开始就返回,可以做判断。
      }
      xxx
      xxx
      xxx
      if (xxx!=qqq)
      {
      ret = yyy;
      return ret;
      }   
        
      return ret;
    }黑色部分就定死,以后楼主就直接用这个模板,以后就用修改红色的那部分
      

  5.   

    result只相当于准备好返回值了,实际返回还是需要exit或函数代码末尾result这个关键词其实挺不错
    vb、asp,只能以函数名作为准备好的返回值,如果函数改名了,要替换代码里的函数名!
    pascal也支持以函数名作为准备好的返回值,但是这样容易有歧义:
    funname=funname+1; //第二个funname是 准备好的返回值 还是 递归调用(如果无参数)?
      

  6.   

    Result就相当于C++的初始化
    int retVal=0;

    return retVal;