int i = i&1在C编程语言中意味着什么?

lub*_*smj -3 c syntax gcc loops

我得到了这个示例代码,我真的不明白它是如何工作的.它由GCC编译,完全没有错误.

另外,你能告诉我这段代码" i = i&1 "有什么用吗?谢谢!

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

该计划的输出是:

迭代

-1

小智 6

在for-Loop的开头:

  • 我被设定为5

下一步是:检查i--,这意味着:

  • 首先:i = 5> 0 =>真
  • 第二:将i设置为i - 1 => i = 4

下一步:做内部块.

下一步:i = i&1,结果如下:

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

下一步:检查i--

  • 首先:i = 0 =>假
  • 第二:将i设为i - 1 => i = -1


Har*_*ris 5

&bitwise AND运营商

i = i&1 // this AND's bits of i to bits of value 1
Run Code Online (Sandbox Code Playgroud)