写一个C表达式,在下列描述的条件下产生1,而在其他情况下得到0。假设x是int类型。
A.x的任何位都等于1。
B.x的任何位都等于0。
C.x的最高有效字节中的位都等于1。
D.x的最低有效字节中的位都等于0。
代码应该遵循位级整数编码规则,另外还有一个限制,你不能使用相等(==)和不相等(!=)测试。
#include <stdio.h>
int main(int argc, char *argv[])
{
int x, num[4];
int i;
num[0] = 0xffffffff;
num[1] = 0x00000000;
num[2] = 0xff000000;
num[3] = 0xffffff00;
for(i = 0; i < 4; i++){
x = num[i];
if (
!~x || /* all bits are one */
!x || /* all bits are zero */
!~(x | 0x00ffffff) || /* most significant byte is 0xff */
!(x & 0x000000ff) /* least significant byte is 0x00 */
) {
printf("%d is 1\n", num[i]);
} else {
printf("%d is 0\n", num[i]);
}
}
return 0;
}