有问题的代码是“?某事: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;
}
它被称为三元条件运算符。这就像一个 if,但内联。这是格式
boolean ? result evaluated to if true : result evaluated to if false
这是一个例子:
y = x>2 ? 12 : 5;
如果 x 大于 2,则 y 将为 12,否则 y 将为 5。
它的名字是“条件运算符”。
condition ? expression1 : expression2
如果条件计算为真,则计算表达式1,否则计算表达式2。
不确定这是否是您所追求的,但statement ? if_true : if_false
控制流称为三元运算符。
被statement
评估。如果为真,:
则计算 之后的表达式。否则,计算 之后的表达式:
。