【发布时间】:2016-03-27 19:02:03
【问题描述】:
我必须创建一个函数,它可以被赋予一个最多 32 位的 int。如果奇数位为 1,则应该返回 1,否则返回 0。我知道如果它与掩码不匹配,它会返回零,但我不明白为什么如果它与掩码匹配它会返回一。是不是因为 & 比较后结果不等于 0,所以返回 true 是 1?
int any_odd_one(unsigned x)
{
return (x&0xAAAAAAAA)!=0;
【问题讨论】:
-
你是说它不起作用,还是你不明白它为什么起作用? C 中布尔表达式的结果是
0或1。&不是“比较”,它是按位掩码。比较在!=。 -
它有效,但我不确定它为什么返回 1。感谢您回答我的问题。