2015-11-17 46 views
0

下面是我的代碼:無效操作數爲二進制%(有浮動和浮動)

#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行。我該如何解決這個問題?

回答

0

您不能對浮點型參數使用模(%)。也許你想這樣做:

c = (int) a % (int) b; 
0

模運算符%用於整數,你已經使用了浮點數。可以使用fmod(a,b)#include <cmath>

4
c = a % b; 

不能使用float作爲操作數%運營商。

改爲使用fmod而不是math.h

double a=5,b=2,c; 
c=fmod(a,b);     // it returns double 
0

你確定它是在第6行嗎?它更可能是說

c = a % b;

因爲只%預計整數值,而不是浮點行。如果你真的希望a和b是浮動的,你可能需要做一些轉換。

1

正如其他人已經提到,你有問題的模操作符的操作數的類型。您需要爲模運算符使用int類型的操作數。

要添加一些參考,引用C11標準,章§6.5.5,乘法運算符

[..]的%操作者的操作數應 有整數型。

相關問題