C++数组元素求和代码异常,替换下标后仍无法得到正确结果
数组求和代码问题排查
问题点逐个拆解:
数组下标完全用错了:
你输入元素和求和的循环里,一直用a[n]访问数组,但数组的合法下标范围是0到n-1,a[n]属于越界访问内存,不仅存不对数据,还会导致未定义行为。循环变量i就是用来遍历下标的,必须改成a[i]。sum变量没初始化:
int sum;只声明了变量但没给初始值,它的初始值是内存里的随机垃圾值,累加的时候会把这个随机值也算进去,结果肯定不对,必须初始化为0。可选优化:改用标准C++容器:
int a[n];是C语言的变长数组特性,不属于C标准(部分编译器会做扩展支持),如果要写标准C代码,建议用std::vector<int> a(n);,记得加上头文件<vector>。
修正后的代码:
//Adding all the Elements in an array and displaying their sum #include<iostream> #include<vector> using namespace std; int main() { int n; cout << "Enter the number of Elements in an array: "; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int sum = 0; for (int i = 0; i < n; i++) { sum += a[i]; } cout << "Sum of array elements: " << sum << endl; }
运行测试:输入2,再输入1和5,会输出Sum of array elements: 6,符合预期。
内容的提问来源于stack exchange,提问作者Ibrahim Aejaz
相关产品推荐
相关产品推荐

