错误:'float' 和 'float' 类型的无效操作数转换为二进制 'operator%'

1 c compiler-errors

我刚开始用C编程,在运行程序时发现了一个问题。错误如下resto == a % b

[错误] 在 C 中将“float”和“float”类型的无效操作数转换为二进制“operator%”

#include<stdio.h>
#include <math.h>

char n;

int main (){

    printf ("Programma che svolge ogni tipo di operazione aritmetica tra 2 numeri a e b\n'n' per chiudere\nPremere 'invio' per continuare\n");
    float a, b, somma, differenza, prodotto, quoziente;
    int resto;
    while (n=getchar()!='n'){
        printf ("Inserisci a\n");
        scanf ("%f",&a);

        printf ("Inserisci b\n");
        scanf ("%f",&b);

        somma = a + b;
        differenza = a - b;
        prodotto = a * b;
        quoziente = a / b;
        resto = a % b;

        printf ("somma = %f + %f = %f\n",a,b,somma);
        printf ("differenza = %f - %f = %f\n",a,b,differenza);
        printf ("prodotto = %f * %f = %f\n",a,b,prodotto);
        printf ("quoziente = %f / %f = %f\n",a,b,quoziente);
        printf ("resto = %f %% %f = %d\n",a,b,resto);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那里的解决方案:

postimg.org/image/guoxt6evn

art*_*rtm 5

错误如下,' resto == a % b' ;

那是因为模运算符%不能应用于floator double。当整数类型被除以时,它的意思是得到数。与或一起使用时,它没有任何意义。xyfloatdouble

此外,通过Draco18s发现,这resto == a % b是不是你想要的,即使ab是整数类型。的==是逻辑运算符,从而表达将产生的临时值1(对于真)和0其它。但是根本没有分配该临时值resto。您需要改用赋值运算符=