为什么这个显示部分正确?

#include <stdio.h>
int main ( )
{
float a,b,x;
scanf("%f %f %f",&a,&b,&x);if (a!=0&&b!=0||(a!=0&&b==0)){x=-b/a;printf("%.3f",x);}if (a==0&&b!=0||(fabs(a)<pow(10,-7)&&b!=0)){printf("no solution");}if(a==0&&b==0){printf("Infinitely solutions");}// return 0;}