首页 > 解决方案 > 为什么它不允许我输入超过 [1][0] 的值?

问题描述

#include<iostream>
using namespace std;
int main()
{
    int row1,col1,row2,col2,a,b;
    int matrix1[row1][col1];
    int matrix2[row2][col2];
    int num;
    int val;


    
    cout<<"\nEnter matrix 1 dimensions in 'row column' format(example: 2 3): ";
    cin>>row1>>col1;
    
    cout<<"\nInput values for matrix 1:- \n";
    for(a=0;a<row1;a++)
    {
        for(b=0;b<col1;b++)
        {
            cout<<"Enter value for index ["<<a<<"]["<<b<<"]: ";
            cin>>matrix1[a][b];
        }
        
    } 
}

当我开始输入值时,程序总是在我输入第二行的第一个值后停止。为什么?

在此处输入图像描述

标签: c++

解决方案


int row1,col1,row2,col2,a,b;
int matrix1[row1][col1];

你认为这些阵列有多大?C++ 不是一种“数据流”语言,您可以在其中使用变量,运行时会暂停执行,直到您稍后初始化该值。相反,会立即读取该变量,并且如果该变量未初始化(例如在本例中未初始化),则程序的行为是未定义的。不要这样做。

此外,数组变量的大小必须是编译时常量。用户输入永远不是编译时间常数。示例程序在 C++ 中格式错误。

[我观察到一些行为]。为什么?

因为程序的行为是未定义的。


推荐阅读