很抱歉再次打扰您,但我有一个错误,我不太确定如何解决。我正在尝试创建一个函数,它打印一个矩阵,该矩阵的行和列都有一个设置值。但是,当我使用“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
(赋值中可以出现在左边的值)。这应该可以解释你看到的错误。要修复错误,请引入两个循环变量,将它们分别称为
row
和column
,并使用它们而不是ROW
和COLUMN
:for (int row = 0; row < ROW ; ++row){
for (int column = 0; column < COLUMN; ++column){
printf("%4d", m[row][column]);
}
printf ("\n");
}