| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:for 语句问题 求解答
只看楼主 加入收藏
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
结帖率:70.59%
收藏
已结贴  问题点数:10 回复次数:6 
for 语句问题 求解答
各位大侠 帮我分析一下 谢谢!
我的疑惑是这样的。
下面的这个小程序中  我执行的时候 输入的 abcdefg   回车之后他出现的是abcdef 没有了g   根据for语句 当我输入g的时候发现第二个表达式为假,跳出for语句。
但是它在判断的时候,就将先将输入的g值 先赋值给c了,那么我以后输入字符变量c的时候应该要输出g啊 。?? 请大侠们指导。  我是一个刚学习c的菜鸟。希望各位不要笑话我的笨问题。

#include"stdio.h"
void main()
{
char c;
for(;(c=getchar())!='g';)
putchar(c);
putchar('\n');
}
搜索更多相关主题的帖子: abcdefg include 表达式 
2012-07-12 22:05
吹丶胖
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-7-12
收藏
得分:2 
你这样写与下面的写法等价
 for(;(c=getchar())!='g';)
 {
     putchar(c);
 }
 putchar('\n');
再仔细看一下书,当你输入g的时候,for循环做判断,正如你所说g的值先赋给了c,但是(c=getchar())!='g'的值为假,已经不执行循环体,也就是putchar(c);语句了。实际上程序运行结束,c的值是等于g的;这个可以在程序最后加一个printf("c=%c\n",putchar(c));输出c的值来证明。
2012-07-12 22:29
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:3 
程序代码:
    char c;
    for(;(c=getchar())!='g';)
        putchar(c);
    putchar(c);
    putchar('\n');


再加一句putchar(c)
2012-07-12 22:30
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:2 
先输入的值赋值给C,但是它是在循环体内赋值的啊,当你输入g时表达式为假,所以下面的putchar(c);直接不执行的嘛。
2012-07-12 22:33
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:1 
加一句putchar(c);

[ 本帖最后由 爱闹的娃 于 2012-7-12 22:39 编辑 ]
2012-07-12 22:36
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
收藏
得分:0 
谢谢 各位  我明白了
2012-07-12 22:39
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:2 
就是说g的值其时已经在了输入缓存区,但根据for循环的规定,当表达式2不满足时,不执行里面的函数,所以不打印,但'g'还是存储在输入缓冲区内,因此在循环外面可以把它读出来

贵在坚持!
2012-07-12 23:51
快速回复:for 语句问题 求解答
数据加载中...
 
   



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

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