int x=3 do {printf("%3d," x-=2);} while (!(--x))

能把循环过程告诉我吗?... 能把循环过程告诉我吗? 展开
 我来答
她是我的小太阳
高粉答主

推荐于2018-04-09 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:9683万
展开全部
因为在while ((--x)):这一语句中,先做--x然后再取!(非处理,故逻辑语句(--x=1循环成立继续循环。当进行后续步骤后,x<0,故逻辑语句(--x)=1永远成立。
C第一次执行完 printf("%3d",x-=2); 后x=1,然后--x为0,取反后为1,条件为true,继续执行循环,第二次执行完 printf("%3d",x-=2); 后x=-2,--x得到-3,取反后是0,循环结束。
高数奇葩
2008-04-26 · TA获得超过105个赞
知道答主
回答量:154
采纳率:0%
帮助的人:95.5万
展开全部
int x=3;
do
{
printf("3%d",x=x-2);
}
while(!(--x));

do:不判断条件,执行循环体。
x先减2,再调用x值,此时x为1,输出__1。
判断条件:
!(--x)指:只要(--x)的值为0就循环,反之不循环。
(--x)为x=x-1,此时(--x)=0,!0条件为真,再次执行循环体。
x=0,x先减2,再调用x值,此时x为-2,输出_-2。
判断条件:
(--x)=-3,!(--x)为假,不执行循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ewave1
2008-04-23 · 超过27用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:83.6万
展开全部
转化一下:
int x=3;
while(x>0)
{
printf("%3d",x);
x=x-2;
--x;
}
所以输出 3
前面两空格
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式