Recentemente, escrevi um programa que classifica uma matriz. Para isso, eu precisava escrever uma função de comparação, que passarei para ela. Minha função de comparação deveria ter retornado 1 (se x> y), -1 (se x <y) ou 0 (se x = y). Escrevi uma função regular (Função 1) usando expressões condicionais, mas fui aconselhado a escrever de maneira diferente (Função 2). É melhor escrever assim? Uma condição booleana sempre retornará 1 para a verdade? (Quero dizer, se x = 0 ey = 0 sempre teremos (x == y) == 1?)
Função 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;
}
Função 2:
int Icmp(void* x, void* y)
{
return (*(int*)x > * (int*)y) - (*(int*)x < *(int*)y);
}