关于C语言getchar语句
本帖最后由 街角提子 于 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; 退出循环
页:
[1]