2016-03-31 84 views
-2

私は初心者であり、私はdev C++を使用しています。私はそのかなりシンプル。それはである象限を決定するために関数を記述しようとしていますが、私は、バイナリ< <にエラー[エラー]無効なオペランドを取得しています(「フロート」と「INT」を持っている)バイナリへの無効なオペランドのエラー

#include <stdio.h> 
int quadrant (float i, float j); 
int main() 
{ 
    float a,b; 
    int c; 
    scanf ("%f,%f",&a,&b); 
    c=quadrant(a,b); 
    printf("the given point lies in %d quadrant",c); 
    return 0; 
} 
int quadrant (float i, float j) 
{ 
    if (i>>0 && j>>0) 
    return 1; 
    else if (i>>0 && j<<0) 
    return 4; 
    else if (i<<0 && j>>0) 
    return 2; 
    else if (i<<0 && j<<0) 
    return 3; 
    else 
    return 0; 
} 

浮動小数点数はバイナリオペランドで使用できないのですか? 浮動小数点数をint、すべての浮動小数点数に置き換えました。今回コンパイルすると、エラーIDが返されます:1のステータスを返します。 私のコードで何が問題になっていますか?

+0

ビットシフトなどの_bitwise_演算子では、浮動小数点演算は使用できません。 ( "2進"演算子は2つのオペランドを持つ演算子です) –

+0

ビットシフト演算子 '<<' and '>>は' <'より小さい比較演算子と'> 'よりも混同されましたか?これらはもちろん、浮動小数点数で使用できます。 –

+6

シフト演算子である '>>'と '' << 'は必要ありません。あなたは単に '>'や '<' or '> ='や '<='を使いたいだけです。 –

答えて

0

比較演算子< , > , <= , >= , !=とビットワイズ演算子<< >>の間で混乱しています。 Bitwise演算子を対応する比較演算子で置き換えます。

int quadrant (float i, float j) 
{ 
    if (i>0 && j>0) 
    return 1; 
    else if (i>0 && j<0) 
    return 4; 
    else if (i<0 && j>0) 
    return 2; 
    else if (i<0 && j<0) 
    return 3; 
    else 
    return 0; 
} 
+0

おそらく '> ='などであるべきです。 –

関連する問題