【发布时间】:2014-01-06 16:44:49
【问题描述】:
我有这段代码,我试图避免 int 类型的溢出。当我输入 {1000000,1000000} 我得到的是 0 而不是 1。这是由于 int 类型的溢出引起的。我正在尝试以某种方式投射它,但它不起作用,请帮忙。
最好的问候!
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
class SplitIntoPairs {
public:
int makepairs(vector<int> A, int X)
{
int s = 0;
sort(A.begin(), A.end());
for (int i = 0; i < A.size() - 1; i += 2) {
int k = A[i] * A[i + 1]; //bool b = true;
if (A[i] * A[i + 1] > 2147483647) {
k = (long long)(k);
// b=false;
}
if (k >= X)
++s;
}
//return the created int
return s;
}
};
【问题讨论】:
标签: c++ casting int overflow long-integer