[英]C++ Floating Point Exception with large files
在執行以下具有大量數據(大約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ưuVĩnhPhúc
對於a%b
,如果b == 0
則未定義行為。 當嘗試整數除法或%
除以零時,許多平台都會報告浮點異常。
重寫以檢測seqList[seq].size() == 0
。
還要檢查S == 0
因為它與(x^lastAnswer) % S
@Jeremy Friesner一起使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.