我正在使用 ROBOTC 对我的机器人进行编程,并且我正在使用其他人构建的一些代码。在一个函数中,我看到了这一行:
int leftDir = (left>0)*2-1;
leftDir
被初始化为一个整数,那么它是做什么的>
呢?我的印象是二进制移位,但我不确定。有人可以解释一下吗?谢谢。
我正在使用 ROBOTC 对我的机器人进行编程,并且我正在使用其他人构建的一些代码。在一个函数中,我看到了这一行:
int leftDir = (left>0)*2-1;
leftDir
被初始化为一个整数,那么它是做什么的>
呢?我的印象是二进制移位,但我不确定。有人可以解释一下吗?谢谢。
是运算>
符greater than
。在 C 中,比较的结果是1
fortrue
或0
for false
。换句话说,上面的代码在逻辑上等价于(但更紧凑):
int leftDir;
if (left > 0) {
leftDir = 1;
} else {
leftDir = -1;
}
先前的答案是正确的,但我相信他打算将其作为位移运算符。这是有道理的,因为他继续将该值乘以一个数字,这意味着他没有将其视为布尔值。不过,他对 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