我正在尝试将这段 C++ 代码转换为 C#:
if (latch_state & 0x1) {
MC->setPin(AIN2pin, HIGH);
} else {
MC->setPin(AIN2pin, LOW);
}
if (latch_state & 0x2) {
MC->setPin(BIN1pin, HIGH);
} else {
MC->setPin(BIN1pin, LOW);
}
if (latch_state & 0x4) {
MC->setPin(AIN1pin, HIGH);
} else {
MC->setPin(AIN1pin, LOW);
}
if (latch_state & 0x8) {
MC->setPin(BIN2pin, HIGH);
} else {
MC->setPin(BIN2pin, LOW);
}
我知道如何将 MC->setPin(PinNum, state)
转换为 MC.setPin(pinNum, state)
所以它们不是问题,但我对 if 语句会变成什么感到困惑。
latch_state
是 uint8_t
类型,但它似乎像字节一样处理(这是我试图将其转换成的)和 0x1
似乎也是一个字节。
那么二元和操作如何在 if 语句中求值?
对于转换,我应该做什么
if ((latch_state & 0x1) == 0x0)
或 if ((latch_state & 0x1) != 0x0)
还是完全不同的东西?
最佳答案
if ((latch_state & 0x1) != 0)
应该可以。通常,不计算为 bool 值的 C++ 条件会与 0 进行隐式比较,“真”表示表达式不为 0。
关于c# - 将代码段从 C++ 转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915275/