我该如何用J编写这个C表达式?(其中x
是输入整数,a
是临时变量)
((a= ~x & (~x >> 1)) ^= a ? 0 : (a ^ (a & (a - 1))) | (a ^ (a & (a - 1))) << 1);
.
编辑:
更易读的形式如下:
int a = (~x) & ((~x) >> 1);
if (a == 0) return 0;
int b = a ^ (a & (a - 1));
return b | (b << 1);
((a= ~x & (~x >> 1)) ^= a)
对a
进行了两次无序修改。 "更易读的形式" 不会导致未定义的行为,因此它不是同一件事情。 - James McNellisif (a == 0) ..
。 - ruslik