私は最近、配列をソートするプログラムを書きました。そのために、私はそれに渡す比較関数を書く必要がありました。私の比較関数は1(if x> y)、-1(if x <y)、または0(if x = y)を返しているはずです。条件式を使用して通常の関数(関数1)を記述しましたが、別の方法(関数2)で記述するようにアドバイスされました。そのように書く方が良いですか?ブール条件は常に真実に対して1を返しますか?(つまり、x = 0およびy = 0の場合、常に(x == y)== 1になりますか?)
機能1:
int Icmp(void* x, void* y)
{
int a = *(int*)x;
int b = *(int*)y;
if (a > b)
return 1;
else if (a < b)
return -1;
else
return 0;
}
機能2:
int Icmp(void* x, void* y)
{
return (*(int*)x > * (int*)y) - (*(int*)x < *(int*)y);
}