int isOverflow(uint a, uint b) {
// a and b are unsigned non-zero integers.
uint c = a * b;
if (c < ( a > b ? a : b))
return 1;
else
return 0;
}
何か不足していますか?上記のスニペットが機能すると思います。
編集:私は、大きな数の乗算、オーバーフローをキャッチする方法など、いくつかの派手な方法を使用してチェックする他のソリューションを見てきました。しかし、上記の単純な解決策も正しいように見えます。それが私がこの質問をしている理由です。