C语言高手进!!

帮我解释一下为什么这个程序运行的结果是 -4 我怎么算都算不出噢..!
才学C的,别笑话我. ^_^

main()
{
int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf("%d\n",x);
}
405917663:麻烦你说详细一点好吗?还是有点糊涂啊..
这句我是这么想的,if(!n) x-=1;
如果n不等于0则执行 x-=1.上面已经说明了 n 的值是0啊.就认为这句不运行了..
麻烦再详细点了..

第1个回答  2007-01-21
设三个整型变量n,m,x,他们的值分别是0,1,2
如果!n为真时,把x-1赋给x,!n即非0,也就是真,所以x变为1
如果m为真时,m=1当然为真,所以把x-2赋给x,x变为-1
如果x为真时,此时x=-1当然为真,所以把x-3赋给x,x变为-4
最后打印出x
(条件运算符中,0以外的数都为真,0为假)
第2个回答  2007-01-21
第一句,!n 返回的是TRUE,if(TRUE)返回的还是TRUE,所以执行该 句。

第二句,M本身就是TRUE,所以还是执行。

第三句,if()中的变量是个非0值,返回还是TRUE,所以仍然执行。本回答被提问者采纳
第3个回答  2007-01-21
首先一点是非0即真,
1.!n既是表示为真,为真就执行下面的语句=>x-1=2-1=1
2.继续判断第二个条件,m不是0,所以也为真,执行if后的语句=>x-2=1-2=-1
3.继续判断第三个条件,也为真,所以执行x-3=-1-3=-4
我也是菜鸟~~呵呵~~~希望你能看的懂~~
第4个回答  2007-01-21
if执行条件是看它括号里面结果是否为1,若为1,则执行,为0,则不执行;if(!n) x-=1;括号中!n不等于0,所以执行x-=1
,算出x=1,这样推算下去,结果就是x=-4

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网