代码看起来像那样
#include <cstdlib>
#include <iostream>
using namespace std;
#define n 3;
#define m 4;
int main(int argc, char* argv[])
{
int arr[n][m];
bool f=true;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
cin>>arr[i][j];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
if(arr[i][j]!=a[0][j])
f=false;
if(f)
cout<<"Setirler eynidir.";
else
cout<<"muxtelifdir";
system("pause");
return 0;
}
获得大量错误
我无法看到任何有问题的代码。有什么建议?我错过了什么?
答案 0 :(得分:8)
#define
未以;
终止,因此分号实际上也粘贴在那里,产生
int arr[3;][4;];
这是无效代码。
永远记住,避免像瘟疫这样的预处理器。
答案 1 :(得分:4)
由于#define
是预处理程序指令,因此您在数组转换中犯了一些错误。
#define n 3;
#define m 4;
int arr[m][n];
// This translates into
int arr[3;][4;];
您可以通过删除定义后的;
来修复它:
#define n 3
#define m 4
甚至更好:
static const size_t n = 3;
static const size_t m = 3;
如上所述,您可以在其他地方使用n
或m
进行类型安全。
答案 2 :(得分:2)
#define
声明后面没有分号。
<强> [EDIT1] 强> 实际上,他们可以,但要小心,因为这样的预处理器语句将成为严格的文本替换。
答案 3 :(得分:1)
删除#define
中的分号。
define。因此
int arr[n][m];
扩展为
int arr[3;][4;];
这显然是语法错误。与你的for循环相同。