2013-07-11 58 views
0

对不起,再次困扰你,但我得到一个错误,我不知道如何解决。我试图做一个函数,为ROW和COLUMN打印一个具有设定值的矩阵。然而,当我使用的行或列中的“for”打印矩阵,编译器将我这个错误:作为赋值左操作数所需的左值。那是什么意思?

error: lvalue required as left operand of assignment

我试着阅读其他类似的问题,并试图找出究竟是什么错误的手段在这种情况下,但我似乎无法这样做。

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

谢谢

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

回答

5

预处理的#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"); 
} 
+2

“这显然是无效:您无法将值分配给常量。“我听说在Fortran中,你可以;) –

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"); 
    } 
} 
相关问题