C语言 while循环语句

我在C/C++程序教程中看到这样一个片段:
while(x>0) x--; /*循环体语句为x--;循环结束后x的值为0*/

while(x-->0); /*循环体语句为空语句;循环结束后x的值为-1*/
这是为什么呢?拜托用比较基础的语言解释……这是C语言哦,C++还没学……

C和C++在这地方是一样的...C++只不过是有“类”。
这个其实就是个执行顺序问题:
while(条件) 循环体;
执行顺序是:1. 条件 2.循环体
在while(x>0) x--;中,当x减小到0时,再执行 x>0 时,不符合条件,就不执行后边的x--了,所以最后x的值就是0.
在while(x-->0);中,当x减小到0时,x>0的条件不成立,但此时x--还要被执行,就是x=-1了。
这个涉及到x--的特性:它是这样的,先用x的值,执行完毕后再执行x-1的操作,令x本身减1.在这个例子中就是:先执行(1) x>0 (判断) (2) x=x-1;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-10
X--,先判断,后计算。

在循环体内的时候,当X减到0,然后判断,发现条件(X>0)不成立,退出。此时对X没有任何赋值操作。

在循环判断条件的时候,当X减到0,判断,发现条件(X>0)不成立,退出。但是,此时X--还有一步减法没有操作,继续,变成-1.

如果是--X,两个结果就一样。这个是先计算,后判断(或者其他运算)本回答被提问者采纳
第2个回答  2013-04-10
当x=0时:
while(x>0) x--;
先判断x>0 ,不满足循环条件,循环结束 x = 0;
while(x-->0);
先执行x-- ,x=-1,不满足循环条件,循环结束,x=-1;
第3个回答  2013-04-10
楼主,我稍加,数字环路也很简单,没有那么多的随机函数,下面是更正
#包括

#包括的; / *“残培”头文件* /

# / * srand()函数的头文件* /

#包括

无效的主要() {字符b;

B =的getchar的();

同时(b! ='_at_')

{printf的(“愿上帝保佑你”);

函数srand(时间(NULL ));

的printf(“%D \ N”的rand()%56);

B = getchar函数();}
}
第4个回答  2013-04-10
第一个,当x=0时,循环结束,x--也就没有执行了。最后是0;
第二个,当x=0是,循环结束,但是括号里 x--执行了,x-1 = -1;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网