1. ホーム
  2. c

[解決済み] C言語におけるi = i&1とはどういう意味ですか?

2022-02-18 06:16:15

質問内容

このサンプルコードを入手したのですが、どのように動作するのか本当に理解できません。GCCによってコンパイルされ、エラーは全くありません。

また、このコード " の部分を教えてください。 i = i&1 "するのですか?ありがとうございます。

int main(void){
  int i;
  for (i = 5; i--; i = i&1) {
    puts("iteration"); 
  }
  printf("%d\n",i);
  return 0;
}

このプログラムの出力は

反復

-1

解決方法は?

for-Loopの先頭で。

  • iが5に設定される

次のステップは iを確認する--ということです。

  • 最初:i = 5 > 0 => true
  • 2番目:iをi - 1に設定する => i = 4

次のステップ:インナーブロックを行う。

次のステップ:i = i & 1、その結果、次のようになります。

  • 4&1 => 0100 & 0001 => i = 0

次のステップ iをチェックする--。

  • 最初:i = 0 => false
  • 2番目:iをi - 1に設定する => i = -1