- ベストアンサー
C言語で数字の符号を取る関数は?
Cを使って数値の符号を取るような関数ってありますか? 具体的には、Fortranを例にとると、 |x|にyの符号をつけるときには、 SIGN(x,y) としますが、これと同じ事をCでやりたいと思っています。 xの絶対値を取るような関数は fabs(x) でできる事は知っているのですが、 yの符号をどうやって取るのかがわからないのです。 あと、ちょっと違う質問なんですが、 ある本のfortranのプログラムで !x=・・・・・・ というのがあったんですが、この !x というのは どういう意味なのか、教えていただければ幸いです。 基本的な質問かも知れませんが、よろしく御願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
普通にyを調べてマイナスだったら0から引けばいいのでは? if(y<0)x = -x; みたいにすればいいんじゃないかな? 関数でなければいけなければ自分で巻数化すればいいし・・・ float Sign(float x,float y) { if(y<0)x = -x; return x; } みたくしくちゃえば
その他の回答 (1)
- j_euro
- ベストアンサー率25% (29/115)
2~3回読んで、質問したいことがやっとわかりました。 「xに、yと同じ符号を付ける方法を知りたい」ってことですね。(かな?ちがうかな?) y/abs(y) で yの符号が得られる(1か-1)ので、 abs(x)にかける。 SIGN(x,y){ return abs(x)*(y/abs(y)); } あ、結局 ponntaさんの回答と大差ないな。 な~んだ、ponntaさんのほうが速くてコンパクトだわ。 しつれいしやした~
お礼
あっそうか! 絶対値で割ってしまえば符号がでますよね! お手数おかけしました。
お礼
なるほど。簡単ですね。 目からウロコが取れました。 有難うございました。