1. ホーム
  2. c

[解決済み] 記号の意味は?

2022-03-14 02:15:51

質問

このプログラムでは、==記号は何を意味しているのでしょうか?

int main()
{
    int x = 2, y = 6, z = 6;        
    x = y == z;
    printf("%d", x);
}

解決方法は?

その == 演算子が等しいかどうかをテストします。例えば

if ( a == b )
    dosomething();

そして、あなたの例では

x = y == z;

x は、y が z と等しい場合、真 (1) になります。 ない がzと等しい場合、xは偽(0)となる。

C言語の初心者プログラマーがよく犯すミス(そして、非常に経験豊富なプログラマーも犯すタイプミス)です。

if ( a = b )
    dosomething();

この場合、bはaに代入され、ブーリアン式として評価されます。プログラマーが意図的にこのようなことをすることがありますが、これは悪い形式です。コードを読む他のプログラマーには、意図的にやったのか(めったにない)、不注意でやったのか(もっと多い)わからないでしょう。よりよい構成は以下の通りです。

if ( (a = b) == 0 )   // or !=
    dosomething();

ここでは、bとaを代入し、その結果を0と比較しています。(興味深いことに、純粋なC言語を書いたことがないC#プログラマーと仕事をしたことがあるが、これが何をするものなのか分からなかった)