在执行以下具有大量数据(大约2MB)的代码时,我在第21行收到一个浮点异常。
#include <bits/stdc++.h>
using namespace std;
int main() {
std::ios_base::sync_with_stdio(false);
int S, Q, type, seq, pos;
int x, y, lastAnswer = 0;
cin >> S >> Q;
vector< vector <int> > seqList(S);
for(int i=0; i<Q; i++){
cin >> type >> x >> y;
if( type == 1 ){
seq = (x^lastAnswer) % S;
seqList[seq].push_back(y);
if(seq == 0) lastAnswer = 0;
}
else if( type == 2 ){
seq = (x^lastAnswer) % S;
pos = (int)(y % seqList[seq].size()); //Line 21
lastAnswer = seqList[seq][pos];
cout << lastAnswer << endl;
}
}
return 0;
}
最佳答案
pos = (int)(y % seqList[seq].size()); //Line 21
seqList[seq].size()
是0
。 @Lưu Vĩnh Phúc使用
a%b
,如果使用b == 0
,则未定义行为。当尝试整数除法或%
被零除时,许多平台都会报告浮点异常。重新编写以检测
seqList[seq].size() == 0
的时间。还要检查
S == 0
,因为它与(x^lastAnswer) % S
一起使用@Jeremy Friesner关于c++ - 大文件的C++浮点异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46221162/