i & 1 == 1 为奇数
i & 1 == 0 为偶数
(比i % 2会快很多)
取出偶数的时候, 千万不能写成这样, 因为 ‘==’ 的优先级比 ‘&’ 高
错误代码
// 什么都不会输出 因为if条件语句i & 0恒为0, 直接跳过
for(int i = 0 ; i < 4 ; i ++ )
if(i & 1 == 0)
cout << i << " ";
puts("");
正确代码
for(int i = 0 ; i < 4 ; i ++ )
if((i & 1) == 0)
cout << i << " ";
puts("");
这道题很重要复习的时候一定要复习!!!
特别鸣谢评论区的dalao们指出问题
学到了
建议你学习一下不同运算符之间的优先级,==的优先级较高,所有i & 1 == 0 等价于 i & 0,那么结果肯定是0。正确写法是(i & 1) == 0
哦哦哦 好哒好哒 谢谢dalao
建议涉及到位运算的代码都添加括号,不仅避免bug还可以提高代码可读性。
好哒 dalao
优先级的问题,加上括号就没事了
哦哦哦 好的 谢谢 dalao
那
i % 2 == 0
应该可行吧? 试一试~i & 1 会快很多