• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++中函数中没写返回值会怎么样?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

先看这一段代码:

/*
P125
清单7.15  使用迭代求第N个Fibonacci数
*/
#include <iostream>
int fib(int position);
int main(){
    using namespace std;
    int answer,position;
    cout << "Which position? ";
    cin >> position;
    cout << "\n";
    answer = fib(position);
    cout << answer << "th is the " << position << " Fibonacci number.\n";
    cin >> position;
    return 0;
}

int fib(int position){
    if(position < 3) return 1;
    int last  = 1;
    int result = 0;
    int tmp = 0;
    for(int b = 1;b<=position;b++){
        if(b < 3) last = 1;
            result = last + result;
            tmp = result;
            result = last;
            last = tmp;
    }
    //return result;
}

按照一贯的思维肯定认为fib函数里不该注掉返回值的那一行,但你有没有想过,这在VC++6.0 和VS2008 里的VC++都能编译通的过?明天用 VS2013测试一下看看是不是也可以通的过。可能没有人试过吧.今天也是无意中发现的,注掉后不仅能编译通的过,还有返回值,只是返回值不是正确的。虽然我不能断定这是VC++的BUG,但这样的做法会不会产生意想不到的BUG?

在百度搜了一下,发现这篇知道 原来会返回随机值,我就不明白了,既然你返回的也是错误的随机值,为何就不能强制编译通不过呢?这是不是C++留的一个坑?有知道的大神能给个回复不


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中Uri类的解释发布时间:2022-07-13
下一篇:
C#-多线程之锁系统发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap