我刚刚开始用C语言编程,我在运行程序时发现了一个问题。
错误如下,resto == a % b
;
[错误]类型无效的操作数' float'并且'漂浮'到二元'运算符%'在C
#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;
}
那里的解决方案:
答案 0 :(得分:2)
错误如下,'resto == a%b';
那是因为模数运算符%
无法应用于float
或double
。当整数类型x
除以y
时,它意味着得到余数。与float
或double
一起使用时,它没有任何意义。
Draco18s也发现,即使resto == a % b
和a
是整数类型,此b
也不是您想要的。 ==
是逻辑运算符,因此表达式将产生临时值1
(对于true)和0
。但该临时值 NOT 根本没有分配给resto
。您需要使用赋值运算符=
。
答案 1 :(得分:1)
在评论讨论之后,问题归结为这一行:
float a, b, somma, differenza, prodotto, quoziente;
int resto;
您需要将a
和b
更改为整数:
float somma, differenza, prodotto, quoziente;
int a, b, resto;
由于@artm指出的问题
答案 2 :(得分:1)
devi usare la http://www.cplusplus.com/reference/cmath/fmod/ fmod per fare il resto di tipi float o double