Прочитав пример кода, предоставленного Texas Instruments для SensorTag, я наткнулся на следующий фрагмент.
void SensorTagIO_processCharChangeEvt(uint8_t paramID) {
...
if (!!(ioValue & IO_DATA_LED1)) {
PIN_setOutputValue(hGpioPin, Board_LED1, Board_LED_ON);
} else {
PIN_setOutputValue(hGpioPin, Board_LED1, Board_LED_OFF);
}
if (!!(ioValue & IO_DATA_LED2)) {
PIN_setOutputValue(hGpioPin, Board_LED2, Board_LED_ON);
} else {
PIN_setOutputValue(hGpioPin, Board_LED2, Board_LED_OFF);
}
if (!!((ioValue & IO_DATA_BUZZER))) {
Clock_start(buzzClockHandle);
}
...
}
Объявление выглядит так (в том же файле).
#define IO_DATA_LED1 0x01
static uint8_t ioValue;
Предоставляет ли if (!!(ioValue & IO_DATA_LED1))
преимущество перед if (ioValue & IO_DATA_LED1)
?