gpt4 book ai didi

c - 使用 if (!!(expr)) 而不是 if (expr)

转载 作者:太空狗 更新时间:2023-10-29 16:16:29 25 4
gpt4 key购买 nike

在阅读德州仪器为其 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) 有任何优势?

最佳答案

两次应用逻辑非 (!) 运算符的目的是将值规范化为 0 或 1。在 if 语句的控制表达式中,这没有任何区别. if 语句只关心值是零还是非零,小小的 !! 舞蹈完全没用。

一些编码风格指南可能会强制执行这种舞蹈,这可能就是您发布的 TI 代码这样做的原因。不过,我还没有看到这样做。

关于c - 使用 if (!!(expr)) 而不是 if (expr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com