为什么返回后的语句会改变返回值?

时间:2011-11-28 14:06:56

标签: c++

C ++在以下代码中返回无效值:

#include <iostream>
#include <vector>

using namespace std;

int f(){
    vector< int * > v[2];
    return 1;
    v[1].push_back(NULL);
}

int main(){
    cout << f();
}

输出结果为:

205960

当我在返回后通过线路时,它工作正常:

#include <iostream>
#include <vector>

using namespace std;

int f(){
    vector< int * > v[2];
    return 1;
    //v[1].push_back(NULL);
}

int main(){
    cout << f();
}

输出结果为:

1

我在mingw32-g ++。exe编译器中使用code :: blocks。 mingw版本是:gcc版本4.4.1(TDM-2 mingw32)。

1 个答案:

答案 0 :(得分:10)

您的编译器有错误。幸运的是,它也已经过时了。你应该升级--G ++最高版本是4.6.2,它也实现了很多C ++ 11,它非常非常有用。

如果您选择坚持使用较旧的编译器,那也是接受其缺陷的决定。

编辑:如果你真的遇到了4.4(例如由于PHB),该系列仍然是。您可以升级到今年4月发布的GCC 4.4.6。