该compare函数是一个函数,它接受两个参数a,b并返回一个描述其顺序的整数.如果a小于b,则结果为负整数.如果a大于b,则结果为正整数.否则,a并且b相等,结果为零.
此功能通常用于参数化标准库中的排序和搜索算法.
实现compare字符功能非常简单; 你只需减去参数:
int compare_char(char a, char b)
{
return a - b;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为通常假设两个字符之间的差异适合整数.(请注意,此假设不适用于以下系统sizeof(char) == sizeof(int).)
这个技巧无法比较整数,因为两个整数之间的差异通常不适合整数.例如,INT_MAX - (-1) = INT_MIN建议INT_MAX小于-1(技术上,溢出导致未定义的行为,但让我们假设模运算).
那么我们如何才能有效地为整数实现比较函数呢?这是我的第一次尝试:
int compare_int(int a, int b)
{
int temp;
int result;
__asm__ __volatile__ (
"cmp %3, %2 \n\t"
"mov $0, %1 \n\t"
"mov $1, %0 \n\t"
"cmovg %0, %1 …Run Code Online (Sandbox Code Playgroud)