C语言入门问题(do while)

来源:百度知道 编辑:UC知道 时间:2024/06/20 02:32:57
main()
{int x=3;
do
{printf("%3d",x-=2);
}
while(!(--x));
}
为什么输出结果是1 ,-2 而不只是1,当x=-1时while里面为0,停止循环,这时候也会打印--x的值(-2)是这样的吗? 但是当while(!(x--))的时候只输出1,因为循环至少进行一次,此时X=1,循环结束 但是为什么就不输出x--的值0呢?

看程序就像机器一样顺序执行就好了。
step 1 x=3 do x=3-2=1 输出
while 中 x为0
但是又取反,所以 可以继续执行了 。
step 2 x-x-2=-2;输出-2
while中 x为 -3 取反正好为0,所以就不在执行了。

printf("%3d",x-=2);
这个之后x == 1;

while(!(--x));
--x == 0
!0== true

又执行了1次

你Printf打在了While之前,如果你把中间改成:
do
{x=x-2;
}
while
…………

printf…………
getch ();就好了!省略号的部分自己补出来!我手机打不方便!

原因:
while(!(--x)):是先自减1再进行while()逻辑判断;
while(!(x--)):是先进行while()逻辑判断再自减1.

x--是先用x再自减 --x是先自减再用x 这一点你一定要注意 本题这一点你弄错了的话 真的是无法理解结果

do while 语句程序从上往下执行 先do 然后判断while括号里表达式的值是否为真 为真 则回去再do 然后再判断 直到while括号里表达式值为假 跳出此循环

你仔细细品品这个理 我感觉你还是那个自减的问题没弄好