帮我看看这道逻辑题
/*
* isPositive - return 1 if x > 0, return 0 otherwise
* Example: isPositive(-1) = 0.
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 8
* Rating: 3
*/
int isPositive(int x) {
return !(x>>31)&!(!x);
}
这道题的意思是 用 输入一个数x 用 ! ~ & ^ | + << >> 这几个操作符来判断 是否为整数,如果是正数返回1,其他返回0.答案已经在上面给出。
我想问的是为什么这样不行? return !(x>>31);