垃圾价值通过,同时总结一系列长整数
Garbage value being passed while Summing up Array of Long Long integers
我正在学习在C 中编码。我遇到了一个问题,该问题需要制定功能来加起来很大并返回总和。我看到一种神秘的行为。当返回值之前,当我在函数aVeryBigSum
中打印数字veryBigSum
时,它可以正常工作。
#include <bits/stdc++.h>
#include <vector>
using namespace std;
long long aVeryBigSum(int n, vector <long long> ar) {
long long veryBigSum;
for(vector<long long>::iterator it = ar.begin(); it != ar.end(); ++it )
veryBigSum += *it;
cout << veryBigSum << "n";
return veryBigSum;
}
int main() {
int n;
cin >> n;
vector<long long> ar(n);
for(int ar_i = 0; ar_i < n; ar_i++){
cin >> ar[ar_i];
}
long long result = aVeryBigSum(n, ar);
cout << result << endl;
return 0;
}
上述输入是:
5
1000000001 1000000002 1000000003 1000000004 1000000005
上述输出是:
5000000015
5000000015
但是,当我不打印aVeryBigSum
函数中的数字时,main
中的cout
语句显示一些垃圾值。
#include <bits/stdc++.h>
#include <vector>
using namespace std;
long long aVeryBigSum(int n, vector <long long> ar) {
long long veryBigSum;
for(vector<long long>::iterator it = ar.begin(); it != ar.end(); ++it )
veryBigSum += *it;
return veryBigSum;
}
int main() {
int n;
cin >> n;
vector<long long> ar(n);
for(int ar_i = 0; ar_i < n; ar_i++){
cin >> ar[ar_i];
}
long long result = aVeryBigSum(n, ar);
cout << result << endl;
return 0;
}
上述输入是:
5
1000000001 1000000002 1000000003 1000000004 1000000005
上述输出是:
5004197743
有人可以向我解释为什么会发生这种情况?我的意思是,打印值如何影响变量到功能之间的传递?
您需要初始化累加器:
long long veryBigSum = 0;
您有时会得到正确的答案。
相关文章:
- 如何将argv字符串更改为大数字的长整数
- 涡轮增压C++结果无法与长整数
- 长整数的意外模仿行为
- 有符号长整数的含义
- 如何在 c++ 中解释对长整数的操作
- 垃圾价值通过,同时总结一系列长整数
- 长整数不适用于 8 的幂C++
- 从文件到短 /长整数读取字节
- C++长整数奇数
- 给定一个n位数的长整数,如何访问其部分
- 将长整数转换为字符数组的最安全方法是什么
- 如何有效地将一系列连续整数插入std::集中
- 使用构造函数c++将一个长整数转换为类对象
- 将一个长字符串除以一个长整数
- 无法从嵌入式Python返回长整数到c++
- 如何得到长整数的两个组成部分
- 如何将长整数和/或无符号整数传递给 MPI 参数
- C++ 获取从 0 到最大长整数的随机数
- 将长整数秒转换为双精度浮点值
- 这是获取数字字符列表并使用它们创建长整数的有效方法吗