#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的值。解释程序的输出
#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的值。解释程序的输出
(!x) ==> (!10) ==> 0
!(0) ==> 1
1 && 10 ==> 1
所以你会得到声明printf("x=%d\n",x);
被执行。
的!x
值是0
然后!(!x)
是1
这是真的,因此它打印在x=10
即if()
(1 && 10)
条件变为真。
(!x)
是一个布尔值,用于检查x是否为零,如果其操作数不为零则产生零,如果其操作数为零则产生一个。 if(!(!x))
相当于if(x)
,因为它反转了!x
这是x的倒数值。该结果与&&
运营商的x
的结果相结合。由于两个条件都为真,则如果块被执行
(!(!x))相当于x ????? –
在布尔意义上 –
我的意思是'如果(!(!x))'等于'if(x)' –
由于x为10,
!x=0
!(!x)=1
1&&10
为真
因此打印x
,即10
你应该输出不代码相匹配。 –
“请在每个步骤中显示x的值” - 请阅读常见问题解答。 **你**应该在每一步显示x的值。如果你弄错了,我们可以指出。 –
'!'操作符返回0,除非它的参数为0,在这种情况下返回1.因此,如果'x'为0,'!! x'返回0,否则返回1。 '1 && 10'的结果是1或者真,因此第一个'printf()'被执行。 –