Ich habe kürzlich ein Programm geschrieben, das ein Array sortiert. Dafür musste ich eine Vergleichsfunktion schreiben, die ich weitergeben werde. Meine Vergleichsfunktion sollte 1 (wenn x> y), -1 (wenn x <y) oder 0 (wenn x = y) zurückgegeben haben. Ich habe eine reguläre Funktion (Funktion 1) mit bedingten Ausdrücken geschrieben, aber es wurde mir empfohlen, anders zu schreiben (Funktion 2). Ist es besser so zu schreiben? Wird eine boolesche Bedingung immer 1 für die Wahrheit zurückgeben? (Ich meine, wenn x = 0 und y = 0 sind, haben wir immer (x == y) == 1?)
Funktion 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;
}
Funktion 2:
int Icmp(void* x, void* y)
{
return (*(int*)x > * (int*)y) - (*(int*)x < *(int*)y);
}