无法使用for循环C ++对整数向量求和
Can't sum a vector of integers using for loop c++
我正在编写一个函数,它将一个整数向量作为输入,并遍历该向量以获得向量中的最大值和最小值,以及总和。参数向量中的最大可能整数是 1000000000。
void miniMaxSum(vector<long> arr) {
long sum = 0;
long min = 1000000000;
long max = 0;
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
sum += arr[i];
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
cout << sum << endl;
}
使用以下输入向量作为参数:
vector<long> x = {793810624,895642170,685903712,623789054,468592370 };
总和为负数:-827229366
long
在大多数操作系统(至少 32 位)上通常是 32 位类型。所以它能容纳的最大值是2,147,483,647
.
你的数字总和是3,467,737,930
。所以溢出了。
考虑使用 unsigned long
或 long long
(至少 64 位)或 unsigned long long
以获得更大的数字。或者您甚至可以使用 intmax_t
或 uintmax_t
来获取支持的最大整数。
我正在编写一个函数,它将一个整数向量作为输入,并遍历该向量以获得向量中的最大值和最小值,以及总和。参数向量中的最大可能整数是 1000000000。
void miniMaxSum(vector<long> arr) {
long sum = 0;
long min = 1000000000;
long max = 0;
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
sum += arr[i];
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
cout << sum << endl;
}
使用以下输入向量作为参数:
vector<long> x = {793810624,895642170,685903712,623789054,468592370 };
总和为负数:-827229366
long
在大多数操作系统(至少 32 位)上通常是 32 位类型。所以它能容纳的最大值是2,147,483,647
.
你的数字总和是3,467,737,930
。所以溢出了。
考虑使用 unsigned long
或 long long
(至少 64 位)或 unsigned long long
以获得更大的数字。或者您甚至可以使用 intmax_t
或 uintmax_t
来获取支持的最大整数。