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");
}
我之前宣布了交叉功能,任何帮助都会很棒!
答案 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;是按位运算符