为什么这个括号时影响时不影响?


#include
    int main(void)
    {  
      /*********Begin*********/
      
      float a,b,c;
      double m,n,d;
      printf("Please enter the coefficients a,b,c:\n");
      scanf("%f,%f,%f", &a,&b,&c);
      d = b*b-4*a*c;
      if(d<0)
      {
      printf("error!\n");
      return 0;
      }
      else
      m=(-b+sqrt(d))/2*a;
      n=(-b-sqrt(d))/2*a;
      printf("x1=%.4f, x2=%.4f\n",m,n);
      /*********End**********/ 
       return 0;
    }


img

这是c语言一元二次方程求根的问题,程序的测试集只有这一组一直不对,其他的又是对的,后面给2*a加上括号以后就对了,这是为什么捏

在求根公式里面2a是放在分母里面的,在程序里面你没有上括号,乘和除的优先级相同,所以在程序里面会是到底先算乘法还是先算除法是不确定的,所以会出现歧义,导致达不到设计者的目的,你应该避免出现这样的情况,所以要上括号,或者分开来写
如果觉的有帮助,望采纳,谢谢

2*a你要加括号啊,分母是(2 * a)啊。
加了括号,a就在分母上,不加括号,a就在分子上的啊

加了括号,a在分母上,不加括号,a在分子上,这是基本的四则混合运算规则,跟语法无关
如果a是1,当然加和不加是一样的了