0

有问题的代码是“?某事:something_else”。通常在下面的代码中,您可以输入 I2C_SLAVE 或 I2C_SLAVE_FORCE。但是这段代码做了别的事情。它是如何工作的,它究竟是做什么的?

if(ioctl(state.i2c_bus_address, force ? I2C_SLAVE_FORCE : I2C_SLAVE, add) < 0)
{
    logger.fail("i2c select fail %d",add);
    return -1;
}
4

3 回答 3

6

它被称为三元条件运算符。这就像一个 if,但内联。这是格式

boolean ? result evaluated to if true : result evaluated to if false

这是一个例子:

y = x>2 ? 12 : 5;

如果 x 大于 2,则 y 将为 12,否则 y 将为 5。

于 2012-11-09T04:16:41.920 回答
3

它的名字是“条件运算符”。

condition ? expression1 : expression2

如果条件计算为真,则计算表达式1,否则计算表达式2

于 2012-11-09T04:16:51.050 回答
0

不确定这是否是您所追求的,但statement ? if_true : if_false控制流称为三元运算符。

statement评估。如果为真,:则计算 之后的表达式。否则,计算 之后的表达式:

于 2012-11-09T04:17:07.313 回答