#include <stdio.h> main () { int i,b,k=0; for (i=1;i<=5;i++) { b=i%2; while (b-->=0) k++; }

printf (&quot;%d,%d&quot;,k,b);}结果为啥是8,-2
2024-10-31 23:25:13
推荐回答(2个)
回答1:

i=1,3,5的时候,进入循环b=1,while(b-->=0)会循环两次(因为b--不会立即改变b的值,在比较大于等于0之后才会自减),所以k会自加两次;当i=2,4时,进入循环b=0,while(b-->=0)会循环一次,k自加1次。所以k总共自加8次,k为8。
在最后一次循环中i=5,b=1,执行while(b-->=0)循环两次,此时b=-1,然后进行大于等于0的比较,不满足循环条件,退出循环,但是因为是b--,所以同时b还需要自减操作,b=-2。所以最后输出b为-2。

回答2:

i取值1,2,3,4,5,但i=1,3,5奇数时候K++执行两次,i=2,4偶数时k++执行一次,所以K=6+2=8;
最后一次执行i=5时,b=1,while(b-->=0)注意b--是先执行后运算,b=1共执行两次,运算了三次,所以b=1-1-1-1=-2