0

したがって、私のプログラムは、文字のグリッドを読み取る txt ファイルを取り込む必要があります。各文字は特定のコマンドを表します。ピリオド (終止符) は、最後のコマンドを実行し続けることを表します。

しかし、コードをコンパイルすると、gcc -Wall -pedantic thebox.c -o thebox次の警告が表示されます。

真の値として使用される代入を括弧で囲むことを提案する

これは、警告が参照する関数の最初の部分です。警告には、行である行 78 が表示されますif(command = ('.')-

int* getCommand(int next[2],char** gridArray)
{
        /* a function to return the command on the next position */
        int nextX = next[0];
        int nextY = next[1];
        char newCommand;
        char command = gridArray[nextX][nextY];
        if(command = ('.')) {
                newCommand = '1';
                gridArray[nextX][nextY] = newCommand;
        }

この警告を修正するにはどうすればよいですか?

4

3 に答える 3

9

と等しいかどうかをチェックし==ます。

将来的に同様の問題を回避するために使用できる手法は、比較を好転させることです。

        if('.' == command) {

extra を忘れる=と、コンパイラは文句を言います。この手法は常に適用されるわけではありませんが (2 つの変数を比較する場合など)、十分な頻度で適用されるため、努力する価値は十分にあります。

于 2013-08-14T01:50:28.770 に答える
5

==notを使用して同等性を確認するには=、それを変更すると、すべて設定されます。

于 2013-08-14T01:35:52.300 に答える
4

構文は正しいですが、セマンティックに問題があります。誰もがこれを見落としています。私は何度もそれをしました。 if(command == '.')

于 2013-08-14T01:44:10.880 に答える