if (!(y&1))
{
c[x++]=d[--y];
}
我无法理解这个声明的作用。y 是一个 int 值。
非(!)标志是什么?
!转换0为和其他1一切0。
结果y&1是0如果最新位y是0(即y的幂2):
......0
0000001
-------
0000000
相对
......1
0000001
-------
0000001
所以,if简单的测试如果y是力量2的倍数。
当数字 y 为偶数时条件为真,当数字 y 为奇数时条件为假。
表达方式
y & 1
表示整数 y 和 1 的按位与。结果实际上等于 y 的最低有效位。奇数将其最后一位设置为 1;对于偶数,最后一位始终为零。
添加一个 NOT !运算符反转该位。