数値Aの符号を返す関数が必要になった時、どのような方法があるでしょうか。ぱっと思いつく範囲では、「if 文で条件分岐」か「AをAの絶対値で除算する」くらいだと思います。
C++で書くならば
double sign(double A){
if(A>0) return 1;
else if(A<0) return -1;
else return 0;
}
double sign(double A){
if(A==0) return 0;
else return A/abs(A);
}
というふうになると思います。
それでは、エレガントな書き方!
double sign(double A){
return (A>0)-(A<0);
}
A>0とA<0の部分で真偽値がそれぞれ返されるので、Aが正なら1-0=1、負なら0-1=-1、0なら0-0=0、というように正しく判定できます。コードの可読性は下がるには下がるかもしれませんが、シンプルでかっこいいと思います。