我有这个示例代码,我真的不明白它是如何工作的。它由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
答案 0 :(得分:6)
在for-Loop的开头:
下一步是:检查i--,这意味着:
下一步:做内部块。
下一步:i = i& 1,结果是:
下一步:检查i -
答案 1 :(得分:5)
&
是bitwise AND
运营商
i = i&1 // this AND's bits of i to bits of value 1
答案 2 :(得分:4)
i = i&1
将提取i
的最低有效位,因为&
是bitwise AND
运算符。
但是,您编写的程序是Undefined Behavior(g ++错误)。这是因为您在i
循环中定义for
,一旦循环结束,i
超出范围。因此,在下一行中打印它会产生错误。
来到你的代码,我真的很想知道你在哪里看到它,因为它对我来说似乎很可怕。 for
循环的条件似乎很复杂,我无法解释循环如何运行(这可能不是一件好事)。