- ベストアンサー
初心者なのでご勘弁を!
馬鹿な質問かもしれませんが、C言語で|a+b|<=cを入力してコンパイルし、 実行しようとしてもエラーが出て実行できません。C言語では絶対値のプログラム は存在しないのでしょうか?もし存在するなら教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
abs(a+b)で絶対値が取れます。
その他の回答 (5)
- jun_l
- ベストアンサー率18% (4/22)
質問の内容とは関係ないのですが、 もうすこしタイトルのつけ方に気をつけたほうがいいと思います。 今回の質問ならば「絶対値を使用できません」など 質問の内容がわかりやすいものがいいと思います。 初心者というのは本文の最後にでもちょこっと書いておけばいいことですから。 偉そうなこと言ってすいません。
お礼
偉そうなことだなんてとんでもないです。以後気を付けます。
- leaz024
- ベストアンサー率75% (398/526)
もう回答の必要はないと思いますが、老婆心ながら。。。 NINJA104さんのおっしゃるように、絶対値程度のものなら、マクロを使った方が関数を使うよりも高速で手軽です。 ただ、 ABS(a++); などとしてしまうと、マクロの副作用で結果が不明(処理系によって結果が異なる)なので注意が必要です。 C++などならインライン関数があるので、こんな問題ないのですが。
お礼
アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。
- NINJA104
- ベストアンサー率43% (133/306)
絶対値を求める関数 ~abs系 を使用し、先述の方々の様に用いるのが正攻法?ですが、いちいち変数の型を気にしなければならないので、私の場合は以下の様なマクロ関数を定義して使っています。 #define ABS(c) (((c)<0)?-(c):(c)) 参考まで。
お礼
アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。
- leaz024
- ベストアンサー率75% (398/526)
a+bの型によって、関数を使い分ける必要があります。 実数なら double fabs(double x); math.h 整数なら long labs(long n); stdlib.h int abs(int n); stdlib.h
お礼
アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。
- ametsuchi
- ベストアンサー率31% (81/257)
abs()は整数型なので、もし、a,b,cが実数値なら、 fabs() を使ってください。
お礼
回答ありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。
お礼
回答ありがとうございました。おかげさまで無事解決しました。 今後ともよろしくお願いします。