国群 发表于 2019-11-15 22:55

C中碰到的关于递增计算的问题 希望能解答一下

本帖最后由 国群 于 2019-11-21 22:28 编辑

你好,新人C语言求助,请问for循环中for(x=1;y<=75;y=++x*5+50)当X为1是 后面y的值不是先自增1运算2*5+50等于60,然后X=1 Y=60吗,为什么还是55呀
for(x=1;y<=75;y=x++*5+50)这样修改的话x是先运算在自增 所以x=1 y=55 可是为什么x=2的时候 y还是55呀求解 谢谢大佬

yourGrace 发表于 2019-11-15 23:47

本帖最后由 yourGrace 于 2019-11-15 23:49 编辑

for循环最后那个是,for循环体执行一遍后,再执行的东西,所以在第二行输出

初始化 x=1 后,判断 y 小于 75, 然后执行for循环题里面的内容,然后才是 for 循环括号内最后一个分号的内容。

建议看一下 for 循环的顺序

baronL 发表于 2019-11-15 23:55

第一个图是:y=55,y=2*5+50
第二个是y=55,      y=1*5+50,   y=2*5+50

shuangming 发表于 2019-11-16 00:33

楼主你好
for(表达式1;表达式2;表达式3),表达式3是执行完for循环中的语句后再执行的语句。

对于++x*5+50那道题 过程如下:
输出1,55;
x自增然后参与运算,得60;
将y赋值为60;
输出2,60;
.......

对于x++*5+50那道题 过程如下:
输出1,55;
x参与运算,得55;
将y赋值为55;
x自增,得2;
输出2,55;
......

lbc___ 发表于 2019-11-16 01:05

for()里面最后一句,要等到循环一遍结束时才执行,也就是先执行了打印y,再执行更新y的计算。

国群 发表于 2019-11-19 21:29

zengbing7682300 发表于 2019-11-19 20:05
进入for循环第一执行x = 1,也只执行一次

谢谢已经了解了

kang000 发表于 2019-11-20 09:03

二楼正解,就是for()循环语句的第3个表达式值最后一次执行的,再返回表达式2进行判断;

页: [1]
查看完整版本: C中碰到的关于递增计算的问题 希望能解答一下