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");
}
我之前已经声明了交叉函数,任何帮助都会很棒!
假设cross
返回int
,您的条件中的右括号位于错误的位置
if (cross(s, t))>>0{
应该
if (cross(s, t)>>0){
// ^
等等
此外,正如 Jeff Mercado 所指出的,如果您想测试小于/等于/大于零,您应该分别使用<
, 。==
>
使用>>
或<<
执行按位移位;这会留下一个位移零位的测试,然后对任何非零答案返回真。这大概不是你想要的。
if
语句如下所示:
if(condition) {
}
你的是:
if condition {
}
您需要替换括号:
if (cross(s, t)>>0)
查看您的代码..看起来您可能想要一个
if(cross(s,t) > 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");
}
请注意,括号也必须围绕整个表达式
if 语句的格式为
if ( _condition-expression_ ) _expression_
您的条件表达式最接近匹配
_condition-expression_ <==> cross(s, t)
并且 the>>0{
不是表达式的有效开头。要解决此问题,您需要
_condition-expression_ <==> cross(s, t) > 0
这将使 if 语句类似于
if (cross(s, t) > 0) {
...
}
如果要检查左操作数是否高于或低于右操作数,请仅使用单个 > 或 <,双 << 和 >> 是按位运算符