c++ - 为什么它不允许我输入超过 [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];
}
}
}
当我开始输入值时,程序总是在我输入第二行的第一个值后停止。为什么?
解决方案
int row1,col1,row2,col2,a,b; int matrix1[row1][col1];
你认为这些阵列有多大?C++ 不是一种“数据流”语言,您可以在其中使用变量,运行时会暂停执行,直到您稍后初始化该值。相反,会立即读取该变量,并且如果该变量未初始化(例如在本例中未初始化),则程序的行为是未定义的。不要这样做。
此外,数组变量的大小必须是编译时常量。用户输入永远不是编译时间常数。示例程序在 C++ 中格式错误。
[我观察到一些行为]。为什么?
因为程序的行为是未定义的。
推荐阅读
- c++ - 将 ASCII 和 UNICODE 字符从管道读取到 WIN1250 中的 char[] 或作为 wchar_t[]
- javascript - 包含超过 10 列时的引导表响应问题
- pandas - 如何更改 seaborn 直方图以在一天中的几个小时内工作?
- javascript - 将“getHours()”方法的 12 小时更改为 24 小时
- database - 如何使用 DIMENSION 表中的动态值集合对 FACT-TABLE 建模
- caching - 如何添加 cookie 哈希作为 TYPO3-Caching 的键
- ios - 使用 XCode 12 构建错误
- c++ - 当比较器返回 true 时,C++ std::sort 自定义比较器无限期运行
- java - 使用 AspectJ 处理 AOP 中的proceed() 赋值中的 void 方法
- database-design - 在数据仓库中建模双时态数据集