|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 街角提子 于 2020-9-16 17:54 编辑
在做C语言S1E13课后作业的时候发现把getchar语句和while放在不同位置运行出来的结果不同。
类似情况如下:
1.当getchar()放在while外:
- #include <stdio.h>
- int main()
- {
- int i=1,a= getchar();
-
- while(i)
- {
- if (a >='4')
- {putchar(a);
- }
- else
- {i=0;
- }
- }
-
-
- return 0;
- }
复制代码
结果:输入4回车后一直打印4无结束(“444444444444444444444444444……”)
2.当getchar放在while里:
- #include <stdio.h>
- int main()
- {
- int i=1,a;
-
- while(i)
- {
- if ((a= getchar()) >='4')
- {putchar(a);
- }
- else
- {i=0;
- }
- }
-
-
- return 0;
- }
复制代码- #include <stdio.h>
- int main()
- {
- int i=1,a;
-
- while(i)
- {
- a= getchar();
- if (a >='4')
- {putchar(a);
- }
- else
- {i=0;
- }
- }
-
-
- return 0;
- }
复制代码
结果:输入4回车后正常打印4;
请问有人知道为什么会出现这种差异吗?
输入4换行时,缓冲区有'4'和'\n',放在循环外a先获取'4',a的值一直为'4'所以一直满足if条件
放在while里a先获取'4',在获取'\n',当a='\n',满足else,i = 0; 退出循环
|
|