行为差异g ++ 4.7.3 vs 4.8.1 with map operator []

时间:2014-04-14 23:28:02

标签: c++ map stl g++4.8 g++-4.7

一名学生提交了一些在Visual Studio和我的个人计算机上使用g ++ 4.7.3工作正常但在我的自动化测试服务器上破解的代码。我追踪它,并可以用这个小程序重现不同的行为:

#include <iostream>
#include <map>

using namespace std;

int main() {
    map<char,int> foo;      
    foo['x'] = 10;
    foo['x'] = foo['x']--;

    cout << foo['x'] << endl;

    return 0;
}

我知道这是愚蠢的代码,可以修复&#34;它,但老实说,我不知道foo['x'] = foo['x']--; 应该这一行。

该程序应该打印出来的是什么?在g ++ 4.7.3(使用-std = c ++ 11)下,它打印出9.在4.8.1(使用-std = c ++ 11)下,它打印出10。

0 个答案:

没有答案