gpt4 book ai didi

c - 在 C 中,如何将几个 bool 值转换为 int,其位值是不同测试的结果

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

我想将几个测试转换为一个 int,其中位是测试的结果:

int i=0;
if (m>speed0) i|=0B00001;
if (m>speed1) i|=0B00010;
if (m>speed2) i|=0B00100;
if (m>speed3) i|=0B01000;

这看起来很慢。有更好的方法吗?速度非常重要(我在 arduino 上)

最佳答案

您可以尝试的一件事是构建一个“if-ladder”,只对i 进行一次写入;通过将较低位滚动到每个较高测试的值,并反转测试的顺序。

int i;
if (m > speed3) i = B00001111;
else if(m > speed2) i = B00000111;
else if(m > speed1) i = B00000011;
else if(m > speed0) i = B00000001;
else
i = 0;

这也减少了读取-修改-写入,因为它总是对 i 进行一次写入。您仍然需要对此进行概要分析,我真的不能说它是否会更快。

哦,看起来像二进制前缀的东西(B)是一个 Arduino-ism ,在 C 中不是标准的。我认为它只是 256 个预处理器宏。

关于c - 在 C 中,如何将几个 bool 值转换为 int,其位值是不同测试的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632967/

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