C语言判断真假问题,求解释

20.How manystatements are truefor xwhichisan integer?
!x%2
!x%2!=0
!!(x%2==0)
x%2&1
A. 0
B. 1
C. 2
D. 3

A.

!x%2 x对2取余,要么为0,要么为1,然后取反,有可能为1或者0.
!x%2!=0 x对2取余,要么为0,要么为1,那么(x%2)不等于0?有可能为1或者0,再取反,有可能为0或者1
!!(x%2==0) x%2==0,有可能为1,也有可能为0,再!!,负负得正,抵消。所以0和1都有可能
x%2&1 x%2有可能为0,也有可能为1,再&1。如果0&1=0; 1&1=1,所以0和1都有可能

4个都不一定为true(1代表真,0代表假),所以选A.

我觉得这个题的题目应该是当x为偶数的时候,不然这样没什么意义啊。