0
#include<stdio.h>
main()
{
    int x=10,y=20;
    if(!(!x)&&x)
      printf("x=%d\n",x);
    else
      printf("y=%d\n",y);
     return 0;
}

输出为 10。如何?请在每一步中显示 x 的值。

4

5 回答 5

7

一、运算符优先级如下

() > ! > &&

现在,根据上述优先级求解

 1. (!x)  = 0
 2. !(!x) = !(0) = 1
 3. (1 && 10) = 1// hence, true.
 4. hence, print x = 10
于 2013-06-25T05:41:29.830 回答
3

(!x)是一个布尔值,用于检查 x 是否为零,如果其操作数不为零则产生零,如果其操作数为零则产生一。if(!(!x))等价于if(x),因为它反转!x了 x 的反转值。该结果与操作员的结果相x结合&&。由于两个条件都为真,因此执行 if 块

于 2013-06-25T05:26:36.860 回答
2

!xis0和 then!(!x)的值1是 true 并且if()ie中的条件(1 && 10)变为 true 所以它打印x=10

于 2013-06-25T05:24:10.130 回答
0

由于 x 是 10,

!x=0

!(!x)=1

1&&10是真的

因此打印x,即10

于 2013-06-25T05:40:09.713 回答
0
(!x) ==> (!10) ==> 0 
!(0) ==> 1
1 && 10 ==> 1

所以你会得到语句printf("x=%d\n",x);被执行。

于 2013-06-25T05:23:52.733 回答