时生 东野圭吾名言:c二级 的一道题,帮忙看看吧

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 18:15:12
main()
{ int n=4;
while(n--) printf("%d ",--n);

}
结果为 :2 0
为什么不是 3 1啊
请教各位啊

while n-- 得时候n变为3,当返回4
--n得时候变为2返回
然后while n-- n=1 返回2
--n n=0 返回0
打印2 0
只要记住 --n 是 n=n-1 也返回n-1
当时 n-- 是 n=n-1 当返回得时候是 n
进入循环体得时候,n已经变了

我认为mininoah的回答是正确的。
记住printf("%d",--n)是先计算--n的值,而--n是当前的n值减1,所以第一次循环就是输出2了。

while n-- 得时候n变为3,当返回4
--n得时候变为2返回
然后while n-- n=1 返回2
--n n=0 返回0
打印2 0
只要记住 --n 是 n=n-1 也返回n-1
当时 n-- 是 n=n-1 当返回得时候是 n

--n的意思是先对n进行自减运算,再使用n的值
n--的意思是先使用n的值,再使n进行自减运算

又一个被谭浩强教材诱导的人啊,可不看谭浩强的又看谁的呢。

--n:先自减再使用自减后的n的值
n--:先使用n原来的值再自减
所以是2 0