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

Sau*_*Rai 3 c++ embedded if-statement binary-operators

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

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];
           }
      }
 }    
Run Code Online (Sandbox Code Playgroud)

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

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

mol*_*ilo 5

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

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

  • @SauravRai 这个答案的本质不是使用 `std::swap`,而是只是删除分支 (2认同)