質問: 初心者な質問で申し訳ありません。 Cで自作関数を作成した場合、 戻り値で何を返すか迷ってしまいます。 戻り値の型をint型とした場合、 エラー時は-1を返すべきなのか0を返すべきなのか また、戻り値の型をchar *等ポインタ型にした場合、 エラー時は空のポインタを返せばよいのか 上記以外にもありますが、 皆さんのアドバイス、ご意見をお願いします。
回答: ここまでの回答が int に偏りすぎている気がするので double な場合を提示 double log(double) であれば、実数に対する自然対数の定義上 - 負の値に対してはそもそも演算が定義されていない=エラー - 非負数に対しては 負の無限大から正の無限大まで、任意の戻り値がありうる ということで「戻り値でエラーを表現する」ことがそもそもできません。 なので log() の値域エラーは errno に値 EDOM を返却する仕様となっています。 あなたの作る関数でも同じような状況になる可能性があります。 なので既に皆様の指摘があるとおり - どう実装したら適切かは案件によって毎回違う - それを考えるのが設計 - 1つのプロジェクトの中での自分の担当範囲では設計を一貫させておくべし です。 Java とかだと検査例外とかで実装されていたりしますが今回は C ですから 言語の文化として暗黙の了解があるわけではなし、 自分で決める [ことができます] [必要があります] かな。