很抱歉再次打扰您,但我有一个错误,我不太确定如何解决。我正在尝试创建一个函数,它打印一个矩阵,该矩阵的行和列都有一个设置值。但是,当我使用“for”中的行或列打印矩阵时,编译器会向我发送以下错误:
错误:赋值的左操作数需要左值
我试着阅读其他类似的问题,试图找出在这种情况下,错误到底意味着什么,但我似乎做不到。
所以我的问题是,这个错误意味着什么?我该如何解决它?
谢谢你

#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");
    }
}

最佳答案

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

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

这显然是无效的:不能将值赋给常量。在C语言中,一个可以赋值的表达式称为lvalue(赋值中可以出现在左边的值)。这应该可以解释你看到的错误。
要修复错误,请引入两个循环变量,将它们分别称为rowcolumn,并使用它们而不是ROWCOLUMN
for (int row = 0; row < ROW ; ++row){
    for (int column = 0; column < COLUMN; ++column){
        printf("%4d", m[row][column]);
    }
    printf ("\n");
}

10-01 08:23
查看更多