C++表达式必须具有常数值
C++expression must have constant value
我在dev c++中编写了这段代码,它很有效,但当我尝试在Visual Studio中运行它时,它会出现一个错误,比如表达式必须具有常数值。
#include <iostream>
using namespace std;
int main() {
int r, c, j;
int matrix[r][c];
cout << "Enter the size of matrix: ";
cin >> j;
for (r = 0; r < j; r++) {
for (c = 0; c < j; c++) {
cout << "matrix" << "[" << r << "]" << "[" << c << "] = ";
cin >> matrix[r][c];
}
}
cout << "n";
for (int i = 0; i < j; i++) {
for (int k = 0; k < j; k++) {
cout << " "<<matrix[i][k] << " ";
}
cout << "n";
}
return 0;
}
它在Visual Studio中不起作用的原因是因为它是一个可变长度的数组,而这些数组实际上不是C++的一部分。尽管如此,一些编译器还是能容忍它,但VS不会。
无论如何都无法获得正确结果的原因是r
和c
没有在此处初始化:
int r, c, j;
int matrix[r][c];
这是未定义的行为。我的建议是使用嵌套的std::vector
(并在您读入大小后使其(:
#include <vector>
...
int r, c, j;
cout << "Enter the size of matrix: ";
cin >> j;
std::vector<std::vector<int>> matrix(j, std::vector<int>(j));
我已经更新了我的代码,如下所示:
#include <iostream>
using namespace std;
int main() {
int r, c, j,i,k;
cout << "Enter the size of matrix: ";
cin >> j;
int matrix[j][j];
for (r = 0; r < j; r++) {
for (c = 0; c < j; c++) {
cout << "matrix" << "[" << r << "]" << "[" << c << "] = ";
cin >> matrix[r][c];
}
}
cout << "n";
for ( i = 0; i < j; i++) {
for ( k = 0; k < j; k++) {
cout << " "<<matrix[i][k] << " ";
}
cout << "n";
}
}
现在,它可以与Devc++配合使用。我是c++的初学者,理解std::vector有点困难。所以,这就是我这样做的原因。
编译时必须知道内置数组的大小,不能在运行时设置(或更改(它。
如果你是从教程中单独学习,而本教程教你使用内置数组,我建议你从书中学习,而不是像上面发布的那样。
简单地说:std::vector<int>
就像一个整数数组,您可以在运行时更改它的大小。内置int matrix[5][5]
的维度在运行时不能更改,必须在编写程序时决定,这是无效的。
相关文章:
- C++表达式必须具有常数值
- 表达式必须具有常数值,变量不能用作定义数组大小的常数
- C++重载|(按位OR)运算符,返回常数值
- 确定LLVM中的常数值
- 在编译时间之前抓取常数值
- 如何基于用户设置的初始变量设置一组常数值
- C++:在函数内部声明数组时,表达式必须具有常数值
- 常数值可能不一致
- 简单的数值表达式求解器
- 初始化ctor中的随机常数值
- 使用整数常量0初始化实例,但不使用其他常数值或整数变量
- 从模板参数中指定常数值
- 枚举指针是否可以指向常数值
- C++std用一个常数值列出初始化,它是否会改变性能
- C++-参考参数的常数值
- c++表达式必须有一个常数值
- (没有)在数值表达式中使用隐式转换?
- 表达式在c++中必须有一个常数值错误
- 错误:表达式必须具有常数值.对于一个明显的常数值
- 在c++中表达式必须有一个常数值