给定两个整数,如何在不使用 if 语句或选择(>=、> 和 =)的情况下区分最大、最小和相等这两个整数。我考虑过使用 fmin
和 fmax
,但我还需要知道如何知道这两个整数是否相同。
最佳答案
假设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/