C++ 循环通过阵列失败
有人能解释一下为什么这个代码不能和最后一个元素一起工作吗C++ 循环通过阵列失败,c++,arrays,C++,Arrays,有人能解释一下为什么这个代码不能和最后一个元素一起工作吗 #include <iostream> using namespace std; void main(){ const int n = 10, m = 10; int asd[n][m] = { { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, { 1, 2, 3, 4, 5,
#include <iostream>
using namespace std;
void main(){
const int n = 10, m = 10;
int asd[n][m] = {
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 } };
int sum = 0;
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][m] << endl;
sum += asd[i][m];
}
cout << "Sum of first col " << sum << endl;
}
如果我删除n和m,并设置array asd[10][10]——这很好,为什么呢?更改此循环
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][m] << endl;
sum += asd[i][m];
}
至于你的问题,那么你的程序有未定义的行为。例如表达式
asd[0][m]相当于asd[1][0]
表达式asd[9][m]相当于asd[10][0]。因此,这一切都取决于数组之外存储在内存中的内容。因为您在上一次迭代中打印了一个超出范围的元素,并且可能在上一次迭代中每个元素都出错
cout << "Array[" << i << "] => " << asd[i][10] << endl;
^^
使用名称空间std;将污染全局命名空间
由于数组只包含10行,因此只有您将拥有索引,直到9。因此它将超出范围
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][m] << endl;
sum += asd[i][m];
}
到
如果要打印所有列的总和,则可以使用以下代码
for (int j=0;j<m;j++){
int sum=0;
for (int i = 0; i < n; i++){
sum += asd[i][j];
}
cout << "Sum of" << j <<"col " << sum << endl;
}
asd[i][10]超出所有i值的范围。
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][0] << endl;
sum += asd[i][0];
}
cout << "Sum of first col " << sum << endl; // 10
int main() {
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][m] << endl;
sum += asd[i][m];
}
for (int i = 0; i < n; i++){
cout << "Array[" << i << "] => " << asd[i][0] << endl;
sum += asd[i][0];
}
for (int j=0;j<m;j++){
int sum=0;
for (int i = 0; i < n; i++){
sum += asd[i][j];
}
cout << "Sum of" << j <<"col " << sum << endl;
}