注册 登录
编程论坛 C++教室

return 问题

jingzitakk66 发布于 2010-03-16 09:19, 628 次点击
c++ primer中文版246页讲解return的 “小心地雷”中的这句话无法理解:在包含return语句的循环后无return是危险的。

为什么危险呢,系统不会像c语言一样自动添加return吗?
9 回复
#2
秀痘魔导士2010-03-16 09:25
以下是引用jingzitakk66在2010-3-16 09:19:17的发言:

c++ primer中文版246页讲解return的 “小心地雷”中的这句话无法理解:在包含return语句的循环后无return是危险的。

为什么危险呢,系统不会像c语言一样自动添加return吗?
不会的,谁告诉你C会自动添加return?
#3
jingzitakk662010-03-16 09:56
回复 2楼 秀痘魔导士
哦,谢谢,虽然不自动加return,但程序结束不是自动返回吗,应该没什么危险啊
#4
秀痘魔导士2010-03-16 13:01
以下是引用jingzitakk66在2010-3-16 09:56:47的发言:

哦,谢谢,虽然不自动加return,但程序结束不是自动返回吗,应该没什么危险啊
逻辑上可能会有问题

程序代码:
if(a > b )
{
    DoSomething();
    //return;
}

DoOtherThings();



不return当然会跑到下一个语句,可能对程序逻辑上造成变动。
#5
jingzitakk662010-03-16 13:17
回复 4楼 秀痘魔导士
这个我也明白啊,但c++ primer里面应该是其他意思吧,呵呵,我也不清楚了。看看吧,没有其他人回答我就关帖了。
#6
秀痘魔导士2010-03-16 13:19
以下是引用jingzitakk66在2010-3-16 13:17:13的发言:

这个我也明白啊,但c++ primer里面应该是其他意思吧,呵呵,我也不清楚了。看看吧,没有其他人回答我就关帖了。
没什么意思的,不要把这本书想的多深奥,这本书就是最适合入门的。
#7
玩出来的代码2010-03-16 13:29
程序代码:
int fun(int a[],int n)          //一个函数判断数组a中的数是否都》=零
{
    for(int i=0;i<n;i++)
   {
        if(a[i]<0)         //若有不符合的返回一个值
           return 0;
    }
    return 1;            //若都大于等于零,返回另一个值,, 应该说的是这个return  ;
}
#8
cnfarer2010-03-16 14:25
楼上的例子合适!
#9
jingzitakk662010-03-16 15:35
回复 7楼 玩出来的代码
谢谢大家
#10
apull2010-03-17 12:25
以下是引用玩出来的代码在2010-3-16 13:29:11的发言:

int fun(int a[],int n)          //一个函数判断数组a中的数是否都》=零
{
    for(int i=0;i<n;i++)
   {
        if(a<0)         //若有不符合的返回一个值
           return 0;
    }
    return 1;    ...



支持下。。
最后一个return不能不写。这也是个好习惯。
1