#include <stdio.h>
int main()
{
int x;
printf("输入一个数");
scanf("%d",&x);
if(!x==0)
{
printf("x不等于0");
}
else
printf("x等于0");
return 0;
}
如果把0改成3或2,包括把printf后面的也改成3或2,然后怎么输入都无法输出x不等于0这句话,但是改成0就可以正常输入输出,这个!到底有什么用
第1个回答 2014-06-20
!表示对布尔值取反,!true==false,!false==true,任何非0的值都相当于true,0相当于false。
所以!0==true不等于0,!2==false等于零,!3==false等于0。你能看懂马?追问
所以!0==true不等于0,!2==false等于零,!3==false等于0。你能看懂马?追问
能看懂,最大问题就是,如果把x后面的0如果改成别的数,为什么就无法为假呢?比如说把所有0都改成3,那么无论输入3还是2都不执行if下面的printf,为什么?
第2个回答 2014-06-20
!就是取反,!x就是当x不等于0时,!x结果就等于0,所以!x==0就为真。
另外,!x==0和x!=0等价,也和x等价。
另外,!x==0和x!=0等价,也和x等价。
第3个回答 2014-06-20
!表示逻辑否
if(!x==0) 表示当x为0时x==0为真,再经过逻辑否,则if的条件为假
if(!x==0) 表示当x为0时x==0为真,再经过逻辑否,则if的条件为假