2つの引数(int32_t)を乗算して飽和させ、int32_tも返す関数を書く必要があります。内部のすべては、int32_tの範囲内でカウントする必要があります。アンダー/オーバーフローをint32_tに乗算すると、結果のミューズはINT32MAXとINT32MINで飽和します。2つのint32_t引数を乗算(飽和)する関数
私の解決策は以下の通りである:それは私が分裂はここに非常に高価であることを言うだろう
int32_t multiple_or_saturate(int32_t a, int32_t b)
{
if(((a >= 0) && (b >= 0)) || ((a < 0) && (b < 0)))
{
if((INT32_MAX/a) >= b)
{
return(a * b);
}
else
{
return(INT32_MAX);
}
}
else
{
if((INT32_MIN/a) <= b)
{
return(a * b);
}
else
{
return(INT32_MIN);
}
}
}
あなたが直面している問題はなんですか? –