输入输出问题,为什么输入0后循环没有结束?


#include
int main()
{
    int x;
    int sum=0;

    while(scanf("%d",&x)!=0)
    {
        if(x>0)
        {   sum+=x;
        }
    }
     printf("%d",sum);
}
//为什么这个输入0不会停止
//也没有输出sum

scanf()函数返回的是成功提取数据的个数或EOF
如果你想让程序输入0后结束循环,那么你应该把第8行改为

while (scanf("%d", &x) == 1 && x != 0)

https://en.cppreference.com/w/c/io/fscanf

#include<stdio.h>
int main()
{
    int x;
    int sum=0;
 
    while(scanf("%d",&x)!=EOF)
    {
        if(x == 0)
            break;
        if(x>0)
        {   
            sum+=x;
        }
    }
    printf("%d",sum);
    return 0;
}