
3个回答
展开全部
因为在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,循环结束。
C第一次执行完 printf("%3d",x-=2); 后x=1,然后--x为0,取反后为1,条件为true,继续执行循环,第二次执行完 printf("%3d",x-=2); 后x=-2,--x得到-3,取反后是0,循环结束。
展开全部
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)为假,不执行循环。
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)为假,不执行循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
转化一下:
int x=3;
while(x>0)
{
printf("%3d",x);
x=x-2;
--x;
}
所以输出 3
前面两空格
int x=3;
while(x>0)
{
printf("%3d",x);
x=x-2;
--x;
}
所以输出 3
前面两空格
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询