• ベストアンサー

C言語で数字の符号を取る関数は?

Cを使って数値の符号を取るような関数ってありますか? 具体的には、Fortranを例にとると、 |x|にyの符号をつけるときには、 SIGN(x,y) としますが、これと同じ事をCでやりたいと思っています。 xの絶対値を取るような関数は fabs(x) でできる事は知っているのですが、 yの符号をどうやって取るのかがわからないのです。 あと、ちょっと違う質問なんですが、 ある本のfortranのプログラムで !x=・・・・・・ というのがあったんですが、この !x というのは どういう意味なのか、教えていただければ幸いです。 基本的な質問かも知れませんが、よろしく御願いします。

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

  • ベストアンサー
  • ponnta
  • ベストアンサー率17% (31/179)
回答No.1

普通にyを調べてマイナスだったら0から引けばいいのでは? if(y<0)x = -x; みたいにすればいいんじゃないかな? 関数でなければいけなければ自分で巻数化すればいいし・・・ float Sign(float x,float y) { if(y<0)x = -x; return x; } みたくしくちゃえば

osamu326
質問者

お礼

なるほど。簡単ですね。 目からウロコが取れました。 有難うございました。

その他の回答 (1)

  • j_euro
  • ベストアンサー率25% (29/115)
回答No.2

2~3回読んで、質問したいことがやっとわかりました。 「xに、yと同じ符号を付ける方法を知りたい」ってことですね。(かな?ちがうかな?) y/abs(y) で yの符号が得られる(1か-1)ので、 abs(x)にかける。 SIGN(x,y){  return abs(x)*(y/abs(y)); } あ、結局 ponntaさんの回答と大差ないな。 な~んだ、ponntaさんのほうが速くてコンパクトだわ。 しつれいしやした~

osamu326
質問者

お礼

あっそうか! 絶対値で割ってしまえば符号がでますよね! お手数おかけしました。

関連するQ&A