こんにちは私は単純な逆整数演算をC++で試しています。以下のコード:逆整数キャッチオーバーフローC++
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
class RevInteger {
public:
int reverse(int x)
{
int result = 0;
bool isNeg = x > 0 ? false : true;
x = abs(x);
while (x != 0)
{
result = result * 10 + x % 10;
x = x/10;
}
if (isNeg)
result *= -1;
if (result > INT_MAX || result < INT_MIN)
return 0;
else
return (int)result;
}
};
私は1534236469として入力します。私はそれが私にいくつかの迷惑な値を返す代わりに、私に0を返すようにしたい。私のプログラムで何が間違っていますか。また、私は目的のためにclimits libを使用しようとしています、同じことを行う簡単な方法はありますか?
私はあなたが求めているものは不明であるかと思います。あなたは "_reverse_"によって何を意味しましたか? '0'は' 1534236469'の逆ではありません。あなたのインプットとアウトプットの関係はどうしたいですか? –
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低でも、あなたはあなたが行った観察と一緒に、[編集]あなたの質問あなたの問題を再現[、最小完全、かつ検証](http://stackoverflow.com/help/mcve)の例を含むようにする必要があります\しますデバッガ。 –
'result'は' int'です。 'INT_MAX'よりも大きくても、' INT_MIN'よりも小さくなることはありません。 –