关于一个for 语句的问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:55:35
#include<stdio.h>
int main(void){
int x;
int y = 55;
for(x = 1; y <= 75; y = (++x*5) + 50)
printf("%10d %10d\n", x, y);
return 0;
}

for的三个判断表达式 是安从左到右
是不是先 按照 前两个表达式 x = 1 ; y <=75为真后 就执行 下面的语句块 然后在 将y = (++x*5) + 50) 得到结果 用于下次循环
还是 先把for的两个判断语句判断后 为真 再 将y = (++x*5) + 50)
赋值给y 最后在执行语句块 要是这样的 话 原来的y已经被赋值为55 那么新被赋值的y怎么储存 储存在哪里?

for语句严格等于如下语句:
x=1;
while(y<=75){

...........

y=(++x*5)+50;
}

你的第一个说法是正确的

for语句的x=1是赋值,初值,所以只执行一遍。
y<=75是循环的判断条件,需要反复判断,当y>75时,循环结束。

y =(++x*5)+50可以看成是循环的循环体,每次执行x会发生变化导致y发生变化。即是每循环一次,x值增1,而y的值增加5。y初值为55,执行5次后,循环结束。

执行结果是
1 55
2 60
3 65
4 70
5 75

1 对x初始化(x=1)
2 判断条件是否成立(y<=75)--若不成立,则跳出循环,return 0
3 (因为条件成立,所以才有这第3),执行printf();
4 进行增量运算(y = (++x*5) + 50)
5 重复2

for第二个语句为判断句,后再执行下面输出的语句,再执行第三条语句,
结果为 1 55
2 60
3 65
4 70
5 75
6 80