cでビット演算を学びながら、ビット演算だけで2つの数を掛け合わせるコードを探していたら、こんなコードを発見!次のシナリオで三項演算子がどのように機能し、正しい 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;
}
誰かが上記のコードがどのように機能しているのか説明してもらえますか?.