0

很抱歉再次打扰您,但我收到一个错误,我不太确定如何解决。我正在尝试创建一个函数,该函数可以打印具有 ROW 和 COLUMN 设定值的矩阵。但是,当我在“for”中使用 ROW 或 COLUMN 打印矩阵时,编译器会向我发送此错误:

错误:需要左值作为赋值的左操作数

我已经尝试阅读其他类似的问题,并试图找出在这种情况下错误的确切含义,但我似乎无法这样做。

所以我的问题是,这个错误是什么意思,我该如何解决?

谢谢

#include <stdio.h>
#include <stdlib.h>

#define ROW 3
#define COLUMN 4
#define SS1 4
#define SS2 1
#define SORTED1 8
#define SORTED2 1
#define SORTED3 5



void matrixPrint (int m[ROW][COLUMN]){
        for (ROW = 0; ROW < 3; ++ROW){
                for (COLUMN = 0; COLUMN < 4; ++COLUMN){
                    printf("%4d", m[ROW][COLUMN]);
        }
        printf ("\n");
    }
}
4

2 回答 2

5

预处理器#define创建文本替换,而不是变量。预处理后,您的程序如下所示:

for (3 = 0; 3 < 3; ++3){
    for (4 = 0; 4 < 4; ++4){
        printf("%4d", m[3][4]);
    }
    printf ("\n");
}

这显然是无效的:你不能给常量赋值。在 C-speak 中,调用一个可以赋值的表达式lvalue(一个可以出现在赋值左侧的值)。这应该可以解释您看到的错误。

要修复错误,请引入两个循环变量,将它们称为rowand column,并使用它们代替ROWand COLUMN

for (int row = 0; row < ROW ; ++row){
    for (int column = 0; column < COLUMN; ++column){
        printf("%4d", m[row][column]);
    }
    printf ("\n");
}
于 2013-07-11T00:13:23.243 回答
0

修复喜欢这个

void matrixPrint (int m[ROW][COLUMN]){
    int row, column;
    for (row = 0; row < ROW; ++row){
        for (column = 0; column < COLUMN; ++column){
            printf("%4d", m[row][column]);
        }
        printf ("\n");
    }
}
于 2013-07-11T00:14:00.207 回答