下面是我的代碼:無效操作數爲二進制%(有浮動和浮動)
#include <stdio.h>
int main ()
{
float a = 5,b = 2;
int c,d;
c = a % b;
d = a/2;
printf("%d\n",d);
return 0;
}
當我嘗試編譯,我得到
「無效操作數爲二進制%」
在第6行。我該如何解決這個問題?
下面是我的代碼:無效操作數爲二進制%(有浮動和浮動)
#include <stdio.h>
int main ()
{
float a = 5,b = 2;
int c,d;
c = a % b;
d = a/2;
printf("%d\n",d);
return 0;
}
當我嘗試編譯,我得到
「無效操作數爲二進制%」
在第6行。我該如何解決這個問題?
您不能對浮點型參數使用模(%)。也許你想這樣做:
c = (int) a % (int) b;
模運算符%用於整數,你已經使用了浮點數。可以使用fmod(a,b)
和#include <cmath>
。
c = a % b;
不能使用float
作爲操作數%
運營商。
改爲使用fmod
而不是math.h
。
double a=5,b=2,c;
c=fmod(a,b); // it returns double
你確定它是在第6行嗎?它更可能是說
c = a % b;
因爲只%預計整數值,而不是浮點行。如果你真的希望a和b是浮動的,你可能需要做一些轉換。
正如其他人已經提到,你有問題的模操作符的操作數的類型。您需要爲模運算符使用int
類型的操作數。
要添加一些參考,引用C11
標準,章§6.5.5,乘法運算符
[..]的
%
操作者的操作數應 有整數型。