1. ホーム
  2. c++

[解決済み] C言語における&&演算とは

2022-04-22 09:28:02

質問

#include <stdio.h>

volatile int i;

int main()
{
    int c;

    for (i = 0; i < 3; i++) 
    {
         c = i &&& i;
         printf("%d\n", c);
    }

    return 0;
}

を使用してコンパイルした上記プログラムの出力は、以下のとおりです。 gcc

0
1
1

を使用すると -Wall または -Waddress オプションで指定します。 gcc は警告を発します。

warning: the address of ‘i’ will always evaluate as ‘true’ [-Waddress]

どのように c は、上記のプログラムで評価されているのでしょうか?

どのように解決するのですか?

それは c = i && (&i); であり、2番目の部分は冗長です。 &i と評価されることはありません。 false .

ユーザー定義型では、実際に単項式をオーバーロードすることができます。 operator & の場合は、違うかもしれませんが、やはり 非常に悪い考え .

もし、あなたが 警告を表示する のようなものが出てきます。

警告: 'i' のアドレスは常に 'true' として評価されます。