通知
すべてクリア
Topic starter
2002年9月21日 6:11 PM
数字から数値への変換で標準関数「atoi()」などがありますが、
この関数を呼ぶ前に
そのCPUで利用可能な範囲内の数字かどうか(たとえば-32768~32767など)をチェックして
この範囲内ならば数字から数値へ変換可能な関数を作成しようと思っています。
しかし、この範囲チェックのうまいやり方がわからなくなやんでいます。
みなさんこのような数値の範囲チェックはどのようにしているのでしょうか?
もしよい方法を知っている方がいましたら
ご教授おねがいします。
2002年9月21日 11:46 PM
予めatof()を使えば、doubleの範囲内ではチェックができます。
万全を期すなら、atoi()を自作するのがよいと思います。
K&Rに簡単な例があったと思う。
2002年9月22日 12:24 AM
ご返答ありがとうございます。
やっぱりすべての範囲を考えるとなるとatoi()といった関数を自作するしか
ないみたいですね。
>K&Rに簡単な例があったと思う。
残念ながら私はK&Rを持っていないのですが、
ほかに参考になるようなものを知っている
orほかにこの問題を解決できるよい方法を知っている方
がいましたら教えてください。
よろしくお願いします。
2002年9月22日 12:56 AM
strtolという関数があります。
MSDNによると、
> オーバーフローが発生すると LONG_MAX または LONG_MIN を返します。
> (中略)
> どちらの関数も、オーバーフローまたはアンダーフローが発生すると、
> グローバル変数 errno に ERANGE を設定します。
となっています。