2013-07-11 93 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"); 
    } 
} 
相關問題