在学习 c 中的位运算时,我正在寻找仅使用位运算将两个数字相乘的代码,我发现了以下代码!我无法理解三元运算符如何在以下场景中工作并产生正确的 o/p。
#include<stdio.h>
static int multiply (int x, int y)
{
return y==0?0:((y&1) ==1?x:0)+multiply(x<<1,y>>1);
}
int main()
{
printf("%d",multiply(2,3));
return 0;
}
有人可以解释一下上面的代码是如何工作的吗?