0

またお手数をおかけして申し訳ありませんが、解決方法がよくわからないというエラーが表示されます。行と列の両方に値が設定された行列を出力する関数を作成しようとしています。ただし、「for」内で ROW または COLUMN を使用して行列を出力すると、コンパイラから次のエラーが送信されます。

エラー: 代入の左オペランドとして左辺値が必要です

他の同様の質問を読んで、この場合のエラーが正確に何を意味するのかを調べようとしましたが、そうすることができないようです.

だから私の質問は、そのエラーは何を意味し、どのように修正するのですか?

ありがとうございました

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

2 に答える 2

5

プリプロセッサ#defineは、変数ではなくテキスト置換を作成します。前処理後、プログラムは次のようになります。

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

これは明らかに無効です。値を定数に割り当てることはできません。C 言語では、代入できる式が呼び出されます(代入の左側lvalueに表示される値)。これで、表示されるエラーが説明されるはずです。

エラーを修正するには、2 つのループ変数を導入し、それら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");
}
于 2013-07-11T00:13:23.243 に答える
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");
    }
}
于 2013-07-11T00:14:00.207 に答える