想问问为什么最后答案是a=10,b=14啊 我算出来的是a=7,b=11

有以下程序

#include <stdio.h>

main()

{int a=1,b=2;

for(;a<8;a++) {b+=a;a+=2;}

printf(“%d,%d\n”,a,b);

}程序运行后的输出结果是(D)

A)9,18     B)8,11      C)7,11          D)10,14

a=1 

b+=a >>b= 3, a+=2, a =3, a++ >>a=4,

a=4

b+=a >>b= 7, a+=2, a =6, a++ >>a=7

a=7

b+=a >>b= 14, a+=2, a =9, a++ >>a=10

for(;a<8;a++) {b+=a;a+=2;}等价于for(;a<8;) {b+=a;a+=3;}

b和a的值变化如下

b a

2 1

3 4

7 7

14 10

第一次进循环的时候,a=1,b=2,执行循环里的步骤为b=3,a=3,第一次循环结束a++,a变成4

第二次循环的时候,a=4,b=3,循环内b=7,a=6,循环结束a=7

第三次循环时,a=7,b=7,循环内b=14,a=9,循环结束a=10

a=10不满足进入循环条件,所以跳出循环

每次运算后,a还要自加1

(a,b)=(1,2)>(4,3)>(7,7)>(10,14)

第一轮循环

b=2+1   3

a=1+2   3循环结束因a++变为4

2轮

b=3+4   7

a=4+2   6循环结束为7

3轮

b=7+7  14

a=7+2   9循环结束加1为10

a=10,b=14