超简单的c语言
发布网友
发布时间:2022-04-23 08:55
我来回答
共3个回答
热心网友
时间:2022-06-18 16:43
#include <stdio.h>
int main()
{
int x=3;
do
{
printf("%3d",x-=2);
//第一次循环,x=3,就等于执行 3-2 ,即输出结果等于 1
//第二次循环,x=0,就等于执行 0-2 , 即输出结果等于 -2
} while(!(--x));
//第一次执行,x=1, 相当于1-1,即x等于0,执行条件是 while(!0),而0的逻辑非运算等于1,所以要进行第二次循环。
//第一次执行,x=-2,相当于-2-1,即x等于-3,执行条件是 while(!(-3)),而-3的逻辑非运算等于0,所以结束循环。
printf("%3d",x);//最后输出x的值,此时 x的值为 -3
return 0;
}
热心网友
时间:2022-06-18 16:43
第一次循环:
输出 1
判断时,x先变为0,然后!0的值为1,继续循环。
第二次循环:
输出 -2
判断时,x先变为-3,然后!(-3)的值为0,退出循环。
程序结束前再输出一次,
输出 -3追问输出-2时 x都变成3了 为什么输出的还是-2呢?
追答第一次循环(x先-2,变成1):
输出 1
判断时,x先变为0,然后!0的值为1,继续循环。
第二次循环(x先-2,变成-2):
输出 -2
判断时,x先变为-3,然后!(-3)的值为0,退出循环。
程序结束前再输出一次,
输出 -3
----不存在“输出-2时 x都变成3了”的情况。
热心网友
时间:2022-06-18 16:44
首先do{}while();这个判断语句 代表先执行一次do里面的循环,再用while判断符合就继续do{}不符合就跳出循环,所以一开始x=3,x-=2即x=x-2;使x=1并输出1;然后执行了while(!(--x))判断条件;
--x表示x先自减1,然后赋值给x因此x之前为1,自减1之后x就是0;
由于0为假,1为真;
所以while判断while(!0)为真;再次do循环,x=0-2=-2;
再次判断时x=-2自减1等于-3
while(!-3)肯定为假跳出循环,之后输出x=-3;
while(!(--x))这个语句代表了while(!0)等于while(1)为真,继续循环
while(!-3)等于while(0)为假,跳出循环追问不太懂
追答你理解错误的地方就是while(!(--x))这里面的x值是要自减1的,而且--x的值其实和自减1之后的x值相等
while(!x)只有!x为真判断循环才成立,而!x作为一个整体只有为0就是假,其他就是真,因此只有x的0才会执行循环