c - 如何区分没有相等运算符的两个整数?

标签 c integer max min

给定两个整数,如何在不使用 if 语句或选择(>=、> 和 =)的情况下区分最大、最小和相等这两个整数。我考虑过使用 fminfmax,但我还需要知道如何知道这两个整数是否相同。

最佳答案

假设2的补码运算:

int intcmp(int int1, int int2)
{
    int diff=int2-int1;
    unsigned int udiff;
    memcpy(&udiff, &diff, sizeof(diff));
    if(!udiff)
        return 0;  /* the two integers are equal */
    else if(udiff & 1<<(sizeof(udiff)*CHAR_BIT-1))  /* check the sign */
        return +1;  /* int1 < int2 */
    else
        return -1;  /* int2 < int1 */
}

关于c - 如何区分没有相等运算符的两个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443041/

相关文章:

c - 使用 scanf 处理多种数据类型

c - 广义链表: Adding Child Link whenever an opening bracket occurs

erlang - 二进制到整数-> Erlang

java - 整数的最大值

ios - CoreBluetooth 上的最大外围设备数量?

c++ - 关闭 AF_PACKET 与 AF_INET 的时间差?

C错误寻找最大素数

java - 如何阻止某人在java方法上输入特定值?

java - 添加固定的最小/最大值

MySQL - 计算出 MAX 值子集的 AVG