我有下面的代码,简单地检查一个uint64是不是偶数,我打算使用一个按位AND操作来检查,但它似乎不起作用。
这是我认为最有效的代码:
int n;
scanf("%d",&n);
for(int i = 0; i < n; i++){
uint64_t s,d;
scanf("%llu %llu",&s,&d);
//try for x
uint64_t x;
bool stop = false;
x = s + d;
printf("%llu",x&1ULL); \\ This prints 0 when the number is even but
if(x&1ULL==0ULL){ \\ This check always returns false
printf("%llu",x);
x/= 2;
如果数字是奇数或偶数,则此代码始终输出0或1,但if语句始终返回false。我做错什么了?谢谢
最佳答案
x&1ULL==0ULL
相当于x&(1ULL==0ULL)
。你需要(x&1ULL)==0ULL
。