| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3778 人关注过本帖, 1 人收藏
标题:当for循环体是getchar时,是怎么执行的?
取消只看楼主 加入收藏
duanlt8
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
结帖率:90.91%
收藏(1)
已结贴  问题点数:5 回复次数:4 
当for循环体是getchar时,是怎么执行的?
int i;
    char c;
    for (①i = 0; ②i<=5; ③i++)
    {
        ④c = getchar();
        ⑤putchar( c );
    }

执行顺序是1  2  4  5  3 后面在来5次2 4 5 3
最后编译运行时是输入6个字符  输出6个字符.
我想问的是当执行到4的时候,它是手动输入,然后在执行5输出,这其中为什么不是立即输入输出(就是一个个的输入输出)然后在执行第二轮循环呢?  而是等到最后连续输入6个字符
2011-11-15 22:44
duanlt8
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
收藏
得分:0 
回复 3楼 woshiaokeman
2楼神人啊
2011-11-16 01:14
duanlt8
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
收藏
得分:0 
回复 2楼 TonyDeng
原来如此   谢谢啦!
不过16楼 现在看的还不太懂 以后估计会懂!
不过仔细想了下,还想问下到底是那种方式:
一:调试运行之后,我输入第一个字符完后,在这之前是不是只执行到了第一个循环的4,输入完第一个字符后,在执行5,然后吧字符放到什么缓冲区,在执行3,  是不是这样的一个循环,然后6个字符输入完之后 按回车, 才从缓冲区调出6个字符输出?
二:还是调试运行,  执行到4之后,把这个字符空间放入缓冲区,然后执行5 吧这个输出空间也放出缓冲区,然后在3; 最后循环结束之后, 缓冲区有6个字符空间, 然后在dos界面输入6个字符 ,回车之后在释放这6个输出空间?

char a[80]="AB"    ,b[80]="LMNP";
    int i = 0;
    strcat (a,b);
    puts(a);
    while (a[i++]!='\0')
    {
        b[i] = a[i];
    }
    puts(b);

    return 0;


结果:

ABLMNP
LBLMNP

为神马第二个结果第一个字符不是a?

[ 本帖最后由 duanlt8 于 2011-11-16 01:37 编辑 ]
2011-11-16 01:34
duanlt8
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
收藏
得分:0 
回复 6楼 TonyDeng
听君一席话,胜看几个月的书啊,   这都是实际经验啊!

不过 b[1]=a[1]   不是字符B 嘛?难道调用的不是新的数组a[80]="ABLMNP"?  也不对啊,  我用putchar输出b[1]的值为B 啊
怎么会是L 呢 ,难不成是调用原来的b[80]="LMNP"  ?

[ 本帖最后由 duanlt8 于 2011-11-16 13:20 编辑 ]
2011-11-16 13:18
duanlt8
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
收藏
得分:0 
回复 8楼 TonyDeng
//        a[10]="ABLMNP\0"

//    b[0]     ="L"
//i=0;    b[1]=a[1]="B"  ==>  b[10]="LBNP"
//i=1;    b[2]=a[2]="L"
//i=2;    b[3]=a[3]="M"  ==>  b[10]="LBLM"  //到这里原来的b值已被改了下面就添加了np\0;
//i=3;    b[4]=a[4]="N"
//i=4;    b[5]=a[5]="P"
//i=5;    b[6]=a[6]="\0"


这样的.  i=5的时候 执行的是a[6]  所以有\0
2011-11-16 15:44
快速回复:当for循环体是getchar时,是怎么执行的?
数据加载中...
 
   



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

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