while循环的判断条件 ch=getchar())!='\n' 为当遇到回车符时,结束,但是循环体中输入的第一个负数,没有读入负号,请问是什么原因呢?
因为scanf也是在输入回车时才会开始赋值,这个代码中while循环中的getchar() 把输入的数字也当成字符了。-1的-被getchar吸收了
供参考:
#include<stdio.h>
#include<string.h>
int main()
{
int a[10000],i=0;
char ch;
memset(a,0,sizeof(a));
while(scanf("%d",&a[i++])==1 && (ch=getchar())!='\n' );
for(int j=0;j<i;j++){
printf("%d ",a[j]);
}
return 0;
}
//-1 -2 -3
//-1 -2 -3 请按任意键继续. . .