| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1800 人关注过本帖
标题:for的循环问题?输出值有疑问?
只看楼主 加入收藏
jenq
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-4-9
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:8 
for的循环问题?输出值有疑问?
#include<stdio.h>
int main(void)
{
    int x,y;
    for(x=1;y<=100;y=(++x*5)+50)
    printf("x=%d  y=%d \n",x,y);
    return 0;
}
输出值:x=1  y=21
        x=2  y=60
        x=3  y=65
        x=4  y=70
        x=5  y=75
        x=6  y=80
        x=7  y=85
        x=8  y=90
        x=9  y=95
        x=10 y=100
求问:for循环第一个输出值为什么等于21 不是55?求详细解释?


搜索更多相关主题的帖子: for 循环 输出 疑问 int 
2018-04-10 16:55
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:2 
回复 楼主 jenq
可以试试根据输出结果看看执行循环之前y的初值是多少~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-10 17:04
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:2 
本人刚学不大明白的写法,我是这样写的结果就是55
int x,y;
    for(x=1;y<=100;++x)
    {y=x*5+50;
    printf("x=%d  y=%d \n",x,y);}
2018-04-10 17:04
jenq
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-4-9
收藏
得分:0 
个人总结:应该受到编译器执行到运行结果影响
2018-04-10 17:15
jenq
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-4-9
收藏
得分:0 
#include<stdio.h>
int main(void)
{
    int x,y;
    //int y=55;
    //for(x=1;y<=100;y=(++x*5)+50)
    printf("x=%d  y=%d \n",x,y);
    return 0;
}
没有赋值居然产生这个输出值:x=2  y=21
2018-04-10 17:19
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:2 
回复 4楼 jenq
没有给y初始值。
int x,y;
for(x=1,y=21;y<=100;y=(++x*5)+50)
printf("x=%d  y=%d \n",x,y);
2018-04-10 17:34
jenq
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-4-9
收藏
得分:0 
没有回答到问题点子上 楼上写的for(x=1,y=21;y<=100;y=(++x*5)+50) x与y的值已经被赋值了,输出结果 x=1 y=21之后就是for输出的循坏,我的问题是问什么我没有赋值给x与y变量输出会产生y=21的结果
2018-04-10 17:43
yuandefeng
Rank: 4
等 级:业余侠客
威 望:3
帖 子:51
专家分:216
注 册:2017-11-28
收藏
得分:2 
你一开始并没有给y赋值啊,之所以没赋值还有21这个值,是因为y这个变量的地址上以前留存的值刚好是21而已。比如我运行你这个程序,y就是8.
就你这个程序而言,for循环的执行顺序是:
从x=1开始(第一次循环的时候并不执行y<=100和y=(++x*5)+50) → 执行循环体(printf语句)→ 再执行循环迭代(y=(++x*5)+50) → 再进行条件判断(y<=100)→ 然后再执行循环体(printf语句)→再迭代→判断→循环体。
楼主还是好好看看书本上关于for循环的内容吧。

[此贴子已经被作者于2018-4-10 19:47编辑过]

2018-04-10 19:44
jenq
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-4-9
收藏
得分:0 
回复 8楼 yuandefeng
理解!按照文档和书本上写还不是不太理解 自己敲键盘试还是最好!感谢楼上回复!
2018-04-10 21:24
快速回复:for的循环问题?输出值有疑问?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123970 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved