Gần đây tôi đã viết một chương trình sắp xếp một mảng. Đối với nó, tôi cần phải viết một hàm so sánh, mà tôi sẽ chuyển vào nó. Hàm so sánh của tôi đã trả về 1 (nếu x> y), -1 (nếu x <y) hoặc 0 (nếu x = y). Tôi đã viết một hàm thông thường (Hàm 1) bằng các biểu thức điều kiện, nhưng tôi được khuyên viết khác (Hàm 2). Có tốt hơn để viết như vậy? Điều kiện Boolean sẽ luôn trả về 1 cho sự thật phải không?
Chức năng 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;
}
Chức năng 2:
int Icmp(void* x, void* y)
{
return (*(int*)x > * (int*)y) - (*(int*)x < *(int*)y);
}