gpt4 book ai didi

c - 在 C 中设置变量时使用逻辑与 1

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

今天浏览一些代码时,我发现了一个有趣的(不必要的?)设置变量的方法:向值添加逻辑 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;}

这个额外的逻辑 AND 实际上改变了代码的任何内容,还是只是多余的?我试着在网上搜索这个,但我找到的最接近答案的是 Short-Circuit Evaluation这似乎不适用于这些情况,因为将 1 短路是没有用的。

简而言之,Logical AND 1 对变量声明有什么作用?

最佳答案

这似乎是一个技巧,可以将任何非零数字强制为 1,同时保持零 - 以及更常见的 !!(expr) idiomatic construct .

想法是根据ivLEDGrnSequence & ivLEDSlot 的值将LED_GRN 设置为10

做同样事情的其他方法如下:

LED_GRN = !!(ivLEDGrnSequence & ivLEDSlot);
LED_GRN = (ivLEDGrnSequence & ivLEDSlot) != 0;

关于c - 在 C 中设置变量时使用逻辑与 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107782/

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