今天查看代码时,我发现了一种有趣(但可能不必要)的设置变量的方法:将逻辑 AND 添加到值中。
LED_GRN = (ivLEDGrnSequence & ivLEDSlot) && 1;
我稍微查找了一下,发现在代码中这种情况还有很多,但形式不同:
作为函数参数:
isoAgCmdHideShow(iObjectID,( (ecu.l & sVar->mask) && 1), (uint8_t *)TxMsg.buf);
在条件语句中:
if( (usbQueue.selection & USB_SELECTION_CAN_1) && 1 ) {return TRUE;}
这个额外的逻辑与操作符实际上是否对代码产生了影响,还是只是多余的?我尝试在网上搜索过这个问题,但最接近答案的是 短路求值 这篇文章,但它似乎不适用于这种情况,因为对1进行短路求值是无用的。
简单来说,逻辑与 1 对变量声明有什么作用?
LED_GRN = (ivLEDGrnSequence&ivLEDSlot)?1:0;
- Jim Rhodesbool LED_GRN = ivLEDGrnSequence&ivLEDSlot
。 - user3386109bool
或更具体地说是_Bool
是语言的后期添加。因此,过时的编译器在处理bool
时可能会显示奇怪的行为。 - user3386109