错误:左值作为赋值的左操作数
我已经尝试阅读其他类似的问题,并试图找出错误在这种情况下的确切含义,但我似乎无法这样做。
所以我的问题是,这个错误意味着什么,我该如何解决?
谢谢
#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");
}
}
答案 0 :(得分:5)
预处理程序的#define
创建文本替换,而不是变量。预处理后,您的程序如下所示:
for (3 = 0; 3 < 3; ++3){
for (4 = 0; 4 < 4; ++4){
printf("%4d", m[3][4]);
}
printf ("\n");
}
这显然无效:您无法为常量赋值。在C-speak中,您可以指定的表达式称为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");
}
答案 1 :(得分: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");
}
}