解释程序的输出

时间:2013-06-25 05:19:04

标签: c output

#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的值。

5 个答案:

答案 0 :(得分:7)

首先,运算符优先级如下

() > ! > &&

现在,基于以上优先级解决

 1. (!x)  = 0
 2. !(!x) = !(0) = 1
 3. (1 && 10) = 1// hence, true.
 4. hence, print x = 10

答案 1 :(得分:3)

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

答案 2 :(得分:2)

!x的值为0,然后!(!x)1,这是真的,if()中的条件即(1 && 10)变为真所以它会打印x=10

答案 3 :(得分:0)

(!x) ==> (!10) ==> 0 
!(0) ==> 1
1 && 10 ==> 1

因此您将获得声明printf("x=%d\n",x);已执行。

答案 4 :(得分:0)

因为x是10,

!x=0

!(!x)=1

1&&10是真的

因此打印x,即10