>>之前的预期表达代币

时间:2013-11-01 17:49:37

标签: c token

 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");
}

我之前宣布了交叉功能,任何帮助都会很棒!

5 个答案:

答案 0 :(得分:2)

假设cross返回int,您的条件中的右括号位于右侧

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

应该是

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

此外,正如Jeff Mercado所述,如果您想测试小于/等于/大于零,则应分别使用<==>。< / p>

使用>><<执行按位移位;这留下了一个测试,即位移零位,然后对任何非零答案返回true。这大概不是你想要的。

答案 1 :(得分:1)

if语句如下所示:

if(condition) {
}

你的是:

if condition {
}

您需要替换括号:

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

看着你的代码..有点像你可能想要一个

if(cross(s,t) > 0)

>>被称为bit shift,可能不是您想要的。

答案 2 :(得分:0)

您不希望'&gt;&gt;'和'&lt;&lt;&lt;这是位移操作。你想要'&lt;'和'&gt;' :

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");
}

请注意,括号必须围绕整个表达式

答案 3 :(得分:0)

if语句的格式为

if ( _condition-expression_ ) _expression_

您的条件表达最接近匹配

_condition-expression_ <==> cross(s, t)

并且>>0{不是表达式的有效开头。要解决此问题,您需要

_condition-expression_ <==> cross(s, t) > 0

这将使if语句类似于

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

答案 4 :(得分:0)

只使用一个&gt;或者&lt;如果你想检查左操作数是高于还是低于右操作数,则双&lt;&lt;和&gt;&gt;是按位运算符