这个C程序中do~~while(!(--x))是什么意思?

main(){intx;x=3;do{printf("%d,\n",x-=2);}while(!(--x));}为什么第二次循环后等于-2了,不是1-2=-1吗... main()
{int x;
x=3;
do
{printf("%d,\n",x-=2);
}
while(!(--x));
}
为什么第二次循环后等于-2了,不是1-2=-1吗
展开
 我来答
魔法师00可可
推荐于2018-04-12 · TA获得超过1660个赞
知道大有可为答主
回答量:726
采纳率:100%
帮助的人:970万
展开全部
main()
{int x;
x=3;
do
{printf("%d,\n",x-=2);

//(1)输出x=x-2=3-2=1
//(3)输出x=x-2=0-2=-2
}
while(!(--x));
//(2)先做--x,x=0,所以!x为真(不为零)
//(4)再做--x,x=-3,!x=0,退出while()
}
WSN石家庄业余球王1
2010-02-11 · TA获得超过1235个赞
知道小有建树答主
回答量:880
采纳率:100%
帮助的人:379万
展开全部
main()
{int x;
x=3;
do
{
printf("%d,\n",x-=2);
}while(!(--x));
}
do..while要先执行循环体的内容
先输出x-=2,也就是1
然后判断!(--x),先判断括号里的,--x为0(先减后取),再非一下,0的非也就是1,所以还要再执行循环
x-=2再输出一次,这时x=-2
再判断!(--x),--x为-3, 任何非0值进行'!'运算就为0,所以循环OVER了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式