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).

解决方法

你的编译器有bug.幸运的是,它也已经过时了.你应该升级–G是4.6.2版本,它也实现了很多C 11,这非常有用.

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...