質問: (double)b*b-4*a*c; if(f>0){ d=((double)-b+sqrt(f))/(2*a); e=((double)-b-sqrt(f))/(2*a); printf("実数解は%fと%fです",d,e); } else if(f=0){ d=-b/(2*a); printf("実数解は%f(重解)です",d); } else { printf("実数解はありません"); } return 0; }
回答: fと置く前のコードを提示してください。 また、条件式が間違っています。 ``` - else if (f = 0) { + else if (f == 0) { ``` 他にまずい箇所として、`a`,`b`に`0`を入れると`d = -b / (2 * a);`で0除算エラーになります。 > > prog.c:17:18: error: lvalue required as left operand of assignment > > > fと置いた後のコードと同じ個所が間違っています。 fと置いた時との違いは、左辺値ではないものに0を代入しようとしているためにエラーになっています。 ``` -else if(b*b-4*a*c=0){ +else if(b*b-4*a*c==0){ ``` 他の3件は`scanf`の戻り値を確認していないという警告で、エラーではありません。