Как работает этот код и как он называется

Код, о котором идет речь, — это «что-то: что-то еще». Обычно в приведенном ниже коде вы можете указать либо 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;
}

0

Решение

Это называется троичный условный оператор. Это как если, но встроенный. Вот формат

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

Вот пример:

y = x>2 ? 12 : 5;

Если x больше 2, y будет 12, иначе y будет 5.

6

Другие решения

Это имя «условный оператор».

condition ? expression1 : expression2

Если состояние оценивает к истине, затем оценивает выражение1, иначе оцените выражения2.

3

Не уверен, что это то, что вам нужно, но statement ? if_true : if_false Управление потоком называется троичным оператором.

statement оценивается. Если это правда, выражение после : оценивается. В противном случае выражение после : оценивается.

0
По вопросам рекламы [email protected]