0

我正在使用 ROBOTC 对我的机器人进行编程,并且我正在使用其他人构建的一些代码。在一个函数中,我看到了这一行:

int leftDir = (left>0)*2-1;

leftDir被初始化为一个整数,那么它是做什么的>呢?我的印象是二进制移位,但我不确定。有人可以解释一下吗?谢谢。

4

2 回答 2

6

是运算>greater than。在 C 中,比较的结果是1fortrue0for false。换句话说,上面的代码在逻辑上等价于(但更紧凑):

int leftDir;

if (left > 0) {
    leftDir = 1;
} else {
    leftDir = -1;
}
于 2013-10-25T19:13:08.473 回答
0

先前的答案是正确的,但我相信他打算将其作为位移运算符。这是有道理的,因为他继续将该值乘以一个数字,这意味着他没有将其视为布尔值。不过,他对 roobtc 位移表示法是不正确的。如果要在 robotsc 中对数字进行位移,请使用以下语法:

int foo = 0b00001111 >> 2; //bit shifts the bianary number 00001111 over by two bits, so foo will be set to the result 00000011
于 2014-01-11T17:05:47.013 回答