nの符号を求めるテクニック

ロベールのC++入門講座 03-12

真偽値が1と0なのを利用した、ある整数の符号を求めるテクニックの紹介がありました。

int sign = (n > 0) - (n < 0);

nがもし正の整数の場合「(1) - (0)」となり、「sign=1」になります。

nがもし負の整数の場合「(0) - (1)」となり、「sign=-1」となります。

更にnがもし0の場合「(0) - (0)」となり、「sign=0」となります。

うまい方法ですね、若干可読性は悪いですが、ifや三項演算子で分岐するよりも簡単に書けます。