我有一个可通过链接访问的程序。 程序是我创建的练习运算符的学校作业。
问题是,当我编译 g++ -std=c++17 -Wall -pedantic -Wno-long-long -O2 -c test.cpp 时,程序对我来说工作正常并且断言正确通过。但是如果我把程序上传到学校的测试服务器,一些断言会失败,我不知道为什么。
有没有人知道如何处理这个问题,由于问题的性质,我已经通过链接提供了该程序,因为我不知道该依靠什么。但是,该程序很容易理解。 https://onecompiler.com/cpp/3z57kyaa7
例如(assert的输出,r=reference, s=student)学校服务器上的样例外观
Mismatched output: r={<-5..0>,<5..105>,<120..150>,<160..180>,<190..210>}, s={<-5. .210>}
编辑: 如果我注释掉第 396 到 399 行的 cout assert 语句,我注意到我的程序有一个奇怪的行为,它被错误地评估了。
// cout << a << endl;
// cout << b << endl;
a += b;
// cout << a << endl;
assert ( toString ( a ) == "{<-500..-300>,<-30..1001>,<2000..3000>}" );
但是如果我取消注释:
cout << a << endl;
cout << b << endl;
a += b;
cout << a << endl;
assert ( toString ( a ) == "{<-500..-300>,<-30..1001>,<2000..3000>}" );
断言是正确的