main() {int a=1,b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\n",a,b);

程序输出结果为10,14。为什么输出结果不是9,14呢,for语句,不是条件不满足了就跳出了吗?不是a不小于8了,就不做后面的程序了吗?这怎么理解呢

a+=2;然后a++,相当于每次加3,a的值依次为1、4、7、10跳出循环,同样,b的值依次为2、3、7、14追问

你的意思是最后一次,9返回a<8;a++这个式子时,还要a++了?就是说执行完循环体后在进行a++了

追答

对的

温馨提示:内容为网友见解,仅供参考
无其他回答

...int a=1,b=2; for(;a<8;a++){b+=a;a+=2;} printf("%d,%d\\n",a,b...
第一:看程序执行:初值a=1,b=2 1<8 所以 b=b+a=2+1=3 a=a+2=1+2=3 ①然后执行for语句中a++,a=4 4<8 所以 b=b+a=3+4=7 a=a+2=4+2=6 ②然后执行for语句中a++,a=7 7<8 所以 b=b+a=7+7=14 a=a+2=7+2=9 ③然后执行for语句中a++,a=10 判断10不小于8...

...a=l;b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\\n",a,b...
循环一共执行3次。第一次,b = b + a = 2 + 1 = 3; a = a + 2 = 3; a++ 使得 a 变为 4。第二次,b = b + a = 3 + 4 = 7; a = a + 2 = 6; a++ 使得 a 变为 7。第三次,b = b + a = 7 + 7 = 14; a = a + 2 = 9; a++使得 a 变为 10。

程序{inta=1,b=2; for(a<8;a++){b+=a;a+=2; printf(“%d,%
继续循环a=7,b=11,继续循环a=9,b=18,此时a>8停止循环 所以输出为 3,3 5,6 7,11 9,18

main() {int a=l;b=2; for(;a<8;a++) {b+=a;a
我的 main() {int a=l;b=2; for(;a<8;a++) {b+=a;a main(){inta=l;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... main(){int a=l;b=2; for(;a<8;a++) {b+=a;a+=...

...{int a=l;b=2; for(;a<8;a++) {b+=a;a+=2;}
第一次循环 b=b+a=2+1=3, a=a+2=1+2=3,循环结束a++,a=4 第二次循环 b=b+a=3+4=7, a=a+2=4+2=6,循环结束a++,a=7 第三次循环 b=b+a=7+7=14, a=a+2=7+2=9,循环结束a++,a=10 所以结果是10,14

...main() {int a=1,b=2; a++;b++; printf("%d%d\\n",a,b); } 运行结...
因为自增在后,先运算再自增即输出a=1,b=2 有图有真相,能采纳不?

运行结果: main(){int a=1,b=2,c; c=(a>b)?b++:(++a>4)?b++:a++...
?b++:a++;这一句的意思是:式子(++a>4)?b++:a++先运算即;++a与4比较,++a>4成立,则式子值为b++,反之为a++;因为++a=2<4,则不成立,式子值为a++即2;然后c=(a>b)?b++:2;运算,a此时值为2,b值为3,所以式子不成立,即c值为2;所以输出为3 2 2 ;清楚了没?

...main() { int a=1,b=2; printf("%d\\n",a=a+1,a+6,b+2);} 则上面...
输出:2 因为=运算符的优先级低于,(逗号)运算符,所以printf("%d\\n",a=a+1,a+6,b+2);等效于:printf("%d\\n",(a=a+1),(a+6),(b+2));也就是printf多提供了2个无用的参数 注意:不能把a=a+1,a+6,b+2当做是一个,(逗号)表达式 ...

...main() { int a = 1,b = 2; printf ("%d\\n",a=a+); }
a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11,...

设int a=1,b=2;则执行a=b+2,a++,a+b;后a和b的值分别是多少
楼主你好。a和b的值分别为5和2。其实没什么特别的,就是先执行a=b+2让a变成4,然后执行a++让a变成5,最后执行a+b不会影响任何变量,所以最终a为5,b为2。测试代码:include <stdio.h> void main(){ int a=1,b=2;a=b+2,a++,a+b;printf("a=%d b=%d\\n",a,b);} 运行结果:...

相似回答