|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 当for循环体是getchar时,是怎么执行的?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
3778
人关注过本帖,
1
人收藏
标题:
当for循环体是getchar时,是怎么执行的?
取消只看楼主
加入收藏
duanlt8
等 级:
论坛游侠
帖 子: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
等 级:
论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
第
2
楼
收藏
得分:0
回复 3楼 woshiaokeman
2楼神人啊
2011-11-16 01:14
举报帖子
使用道具
赠送鲜花
duanlt8
等 级:
论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
第
3
楼
收藏
得分: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
等 级:
论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
第
4
楼
收藏
得分: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
等 级:
论坛游侠
帖 子:70
专家分:107
注 册:2011-9-15
第
5
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
当for循环体是getchar时,是怎么执行的?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.105281 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved