我的问题是我们可以避免if条件吗?

我有一个代码条件,例如以下

for(int i=0;i<Number;i++)
{     
     int* pIn = pInputArr[i];
     int* pOut = pOutputArr[i];
      
     for(int Input_number =0;Input_number<100;Input_number++)
         {
            Some_fun(pIn,pOut );
            if (Input_number % 2 == 0)
            {
               pIn = pOutputArr[i];
               pOut = pInputArr[i];
            }
            else
           {
               pOut =  pOutputArr[i];
               pIn = pInputArr[i];
           }
      }
 }    

我想用一种更有效的嵌入式编程方式来代替它,因为有人告诉我,嵌入式编程中的分支操作成本很高。有没有更简洁的方法来使用位操作而不使用 if 条件来实现这一点?也不使用任何内置功能,例如swap和其他。

基于奇数和偶数条件,我正在交换作为Some_func. 我在几个帖子中检查了类似的查询,但没有发现它们有用。任何建议将不胜感激。

回答

如果你想交替,你不需要检查均匀度——只需交换。

for(int Input_number =0;Input_number<3;Input_number++)
{
    Some_fun(pIn, pOut);
    std::swap(pIn, pOut);
}

  • @SauravRai the essence of this answer is not using `std::swap`, but rather to just remove the branch

以上是我的问题是我们可以避免if条件吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>