[n&1]和[n%2]如何工作?
理论上,n&1
屏蔽或只保留一个数字的最低位。
n%2
将n
除以2
并返回余数。
两者都是常见的测试,以查看数字是偶数还是奇数。
允许编译器用表达式的等效功能代替。所以编译器可以针对这两种情况发出n&1
的指令。
在不同的优化级别下打印该函数的汇编语言列表。
为什么downvote? –
'&'被称为[**按位运算符**](https://msdn.microsoft.com/en-us/library/4ke0e88k.aspx)。 –
@FirstStep:我在哪里提及运营商?我知道它是众多按位运算符之一。它被称为“按位AND”或“算术AND”。 –
编译器可能会优化它们以实现本质上相同的功能。 –
为这两个语句打印汇编语言并进行比较。还要比较不同优化级别的汇编语言。 –
@ThomasMatthews当用模糊的两个幂来修饰时,就像在标题中一样,是的。 – tofro