下列表达式中,不满足”当x的值为偶数时值为真,为奇数时值为假“要求的是:

下列表达式中,不满足”当x的值为偶数时值为真,为奇数时值为假“要求的是:
A.x%2==0
B.!x%2!=0
C.(x/2*2-x)==0

D.!(x%2)
答案是B,求详细解释

这是运算符的优先级问题
A。.x%2==0即.(x%2)==0 ,x为偶,这x%2结果为0,0==0结果为真
B..!x%2!=0 即 ((!x)%2)!=0 由于先运算!x,所以结果跟x是否为偶数没有关系
C。由于x是整数,x/2结果也为整数,例9/2=4,偶数时x/2*2=x,结果为真,奇数时x/2*2不等于x
D。应该很好理解吧....
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-23
A, 对2取余为0,即为偶数,很标准的方式
B,!的优先级高于!=,x为非0偶数时,!x即为0,0%2==0,所以!x%2!=0的判断就不对了
C,x/2*2,等同于(x>>1)<<1的意思就是剔除了二进制的最低位把它变成偶数,如果剔除二进制最低位后仍然相等,则表示x是偶数
D,跟A等同。逻辑判断(表达式==0)就表示(!表达式)
第2个回答  2013-04-23
A选项 很容易判断满足上面叙述;
B选项 考察逻辑非(!)与取余(%)的优先级,逻辑非的优先级为2,取反为3,所以先计算取反,可以判断不完全满足上述要求;
C选项 x为int类型时,遵从取整数的原则,如x是奇数3,那么左式就等于-1,即奇数时为假;
D选项 与A对应,表达式为0则为假,表达式为非零则为真
相似回答