2 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
条件判断逻辑不一样执行自然不一样,
int c;
c = getchar();
while( c != EOF)
putchar(c);
首先看这个 EOF是-1的意思 你是用的getchar()比如我们输入一个 (a) 那么int c得到的就是97 为什么是97
应为你是获取一个字符 根据ascii码表对应 a的十进制就是97 接下来我们才看看循环条件
条件是 a != EOF 我刚刚说了EOF代表的是-1 (为什么是-1?这是c用来判断文件指针是否执行到末尾的一个结束标志 可以右键查看EOF 的宏定义 = #define EOF (-1))很明显了
c 现在 = (a)97 != EOF(-1) c = 91 eof = -1 确实是不等于 那么条件成立
输出后在继续判断 c!=eof c还是97并没有改变 还是不等于 就造成了死循环
那么在看第二个代码
int c;
while((c=getchar())!=EOF)
putchar(c);
这里还是一样 输入一个a c = (a)97; 那么在判断条件 而c是(a)97 肯定不等于eof(-1) 那么添加成立 执行输出a
关键点事第二次循环了 输出后又会再次执行条件判断 一看条件是getchar 那么先执行getchar这个c函数 等待输入后
在判断c 是不是不等于eof
所以这个的效果是 没输入一个字符 输出 后在等待输入一个再发 在输出 一直循环直到遇见eof
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报
0/150
提交
取消