这种题是中国教育脑残题,基本可以略过
如果你想懂,继续往下读
首先,
你要知道前置减减和后置减减的区别
前置减减--a作为表达式的一部分,先减减,然后把值赋给自己
后置减减a--作为表达式的一部分,先进行运算,然后减减赋值给自己
比如a = 100, b = 100;
c = --a;和d = b--;结果不一样,前面的结果a = 99, c = 99
后面的结果d = 100, b = 99
第二,
虽然有区别,但是程序执行顺序是从上到下,那么进入printf的时候,
while已经执行完了,那么第一次进入while的时候,n等于几?等于3!!!
然后给你讲下运行原理
第一次进入while循环,进入条件判断前,n = 4
进入条件判断后,先用 n = 4作为条件去判断是否跳出循环,
发现不等于0,哦,循环可以继续,我记住了。好的,然后n自减一
进入循环体,--n前置的,那么n就先自减等于2,然后打印输出 2
第二次进入while循环,进入条件判断前,n = 2
进入条件判断后,先用 n = 2作为条件去判断是否跳出循环,
发现不等于0,哦,循环可以继续,我记住了。好的,然后n自减一
进入循环体,--n前置的,那么n就先自减等于2,然后打印输出 0
第三次进入while循环,进入条件判断前,n = 0
进入条件判断后,先用 n = 0作为条件去判断是否跳出循环,
发现等于0,哦,循环不可以继续,我记住了。好的,然后n自减一
最后n = -1
给你留个小练习,下面的代码运行结果是什么
#include
#include
int main(void)
{
int n = 4;
while(n--)
printf(" %d", n--);//把--n改成n--
return 0;
}