一名学生提交了一些在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。