• ベストアンサー

初心者なのでご勘弁を!

馬鹿な質問かもしれませんが、C言語で|a+b|<=cを入力してコンパイルし、 実行しようとしてもエラーが出て実行できません。C言語では絶対値のプログラム は存在しないのでしょうか?もし存在するなら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

abs(a+b)で絶対値が取れます。

son_son3
質問者

お礼

回答ありがとうございました。おかげさまで無事解決しました。 今後ともよろしくお願いします。

その他の回答 (5)

  • jun_l
  • ベストアンサー率18% (4/22)
回答No.6

質問の内容とは関係ないのですが、 もうすこしタイトルのつけ方に気をつけたほうがいいと思います。 今回の質問ならば「絶対値を使用できません」など 質問の内容がわかりやすいものがいいと思います。 初心者というのは本文の最後にでもちょこっと書いておけばいいことですから。 偉そうなこと言ってすいません。

son_son3
質問者

お礼

偉そうなことだなんてとんでもないです。以後気を付けます。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

もう回答の必要はないと思いますが、老婆心ながら。。。  NINJA104さんのおっしゃるように、絶対値程度のものなら、マクロを使った方が関数を使うよりも高速で手軽です。  ただ、   ABS(a++); などとしてしまうと、マクロの副作用で結果が不明(処理系によって結果が異なる)なので注意が必要です。  C++などならインライン関数があるので、こんな問題ないのですが。

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.4

絶対値を求める関数 ~abs系 を使用し、先述の方々の様に用いるのが正攻法?ですが、いちいち変数の型を気にしなければならないので、私の場合は以下の様なマクロ関数を定義して使っています。 #define ABS(c) (((c)<0)?-(c):(c)) 参考まで。

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

a+bの型によって、関数を使い分ける必要があります。 実数なら double fabs(double x);  math.h 整数なら long labs(long n);  stdlib.h int   abs(int n);   stdlib.h

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • ametsuchi
  • ベストアンサー率31% (81/257)
回答No.2

abs()は整数型なので、もし、a,b,cが実数値なら、 fabs() を使ってください。

son_son3
質問者

お礼

回答ありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

関連するQ&A