这只是为了好玩。
你能给我一个确定两个数字中较大值的方法吗?您可以使用除大于或小于运算符之外的其他运算符。
使用您喜欢的任何工具(编程语言、铅笔纸等)。 还有一件事你不能做以下事情:
int main()
{
int num1, num2;
cin >> num1 >> num2;
if( (num1-num2) + abs(num1-num2) )
cout << num1 << " is bigger" << endl;
else
cout << num2 << " is bigger" << endl;
return 0;
}
最佳答案
好吧,如果你假设二进制补码算法:
int highBit = ~INT_MAX;
int rslt = num1 - num2;
if (rslt & highBit)
// num2 > num1
else if (rslt)
// num1 > num2
else
// num1 == num2
这仅在两个数字均为正数时才有效。例如,如果 num1
为正而 num2
为负,则 num1-num2
可能溢出,导致结果为负,这将错误地报告 num2 > num1
。如果两个数字都是负数,这将报告相反的情况(即 -12 将报告为大于 -1)。
关于algorithm - 没有大于或小于运算符的更大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031829/