#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的值。
发布于 2013-06-25 13:41:30
首先,运算符的优先级如下
() > ! > &&现在,基于上述优先级的求解
1. (!x) = 0
2. !(!x) = !(0) = 1
3. (1 && 10) = 1// hence, true.
4. hence, print x = 10发布于 2013-06-25 13:26:37
(!x)是一个布尔值,用于检查x是否为零,如果其操作数不为零,则返回0,如果其操作数为零,则返回1。if(!(!x))等同于if(x),因为它对x的反向值!x求逆。此结果与x的结果通过&&运算符组合在一起。由于这两个条件都为真,因此将执行if块
发布于 2013-06-25 13:24:10
!x的值为0,然后!(!x)为1,这为真,并且if()中的条件为真,即(1 && 10)为真,因此它输出x=10。
https://stackoverflow.com/questions/17289661
复制相似问题