C语言简单的最大最小值问题

#include<stdio.h>
int main()
{
int n,min,max;
min=0;
max=0;
while(scanf("%d",&n),n!=0)
{
if(n<0&&(max==0||max<n))
max=n;
if(n>0&&(min==0||min>n))
min=n;
}
printf("%d %d",max,min);
return 0;
}
这里两个if条件里面的内容是如何判断出最大负数最小正数并输出的?

n<0&&(max==0||max<n)
这个条件就是判断最大负数嘛

max比n还小且n为负的情况下,就将n赋给max,这样循环下去最后会得到最大的负数或者0给max;
min比n还大且n为正的情况下,就将n赋给min,这样循环下去最后会得到最小的正数或者0给min.

if(n<0&&(max==0||max<n))
max=n;
这里,先判断n<0,如果n小于0,说明是负数,然后判断max 是不是等于0或者max是不是小于新输入的负数,max等于0说明是第一次输入,还没有给max赋值(因为max记录的是最大负数)。如果小于新输入的负数,就用max记录新输入的负数。所以最后max就是输入的最大负数。
最小正数是一个道理。