-5
 if (cross(s, t))>>0{
  printf("turns to the left\n");
} else if (cross(s, t))==0{
  printf("points are co-linear\n");
} else (cross(s, t))<<0 {
  printf("turns to the right\n");
}

私はクロス関数を以前に宣言しました。

4

5 に答える 5

2

crossが返されると仮定するとint、条件の間違った場所に閉じ括弧があります

if (cross(s, t))>>0{

する必要があります

if (cross(s, t)>>0){
//                ^

また、Jeff Mercado が指摘したように、ゼロより小さい/等しい/ゼロより大きいことをテストする場合は、それぞれ<,を使用する必要があります。==>

ビットごとのシフトを使用>>または実行します。<<これにより、ビットがゼロの場所にシフトし、ゼロ以外の回答に対して true を返すというテストが残ります。これはおそらくあなたが望むものではありません。

于 2013-11-01T17:51:11.583 に答える
1

ifステートメントは次のようになります。

if(condition) {
}

あなたのものは:

if condition {
}

括弧を置き換える必要があります。

if (cross(s, t)>>0)

あなたのコードを見る..それはあなたが望むかもしれないようです

if(cross(s,t) > 0)

>>これはビット シフトとして知られており、探しているものではない可能性があります。

于 2013-11-01T17:52:17.010 に答える
0

左オペランドが右オペランドよりも高いか低いかを確認する場合は、単一の > または < のみを使用します。二重の << および >> はビット単位の演算子です。

于 2013-11-01T17:52:15.737 に答える
0

ビットシフト操作である「>>」と「<<」は必要ありません。「<」と「>」が必要です:

if (cross(s, t)>0){
  printf("turns to the left\n");
} else if (cross(s, t))==0{
  printf("points are co-linear\n");
} else (cross(s, t)<0) {
  printf("turns to the right\n");
}

式全体も括弧で囲む必要があることに注意してください。

于 2013-11-01T17:51:16.293 に答える