马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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; 退出循环
|