#include <stdio.h>
int foo(int a, int b)
{
return ((a>>= b<<= a) ? 1 : 0);
}
void bar(int x, int y)
{
printf("%d,%d: %s\n",x, y, (foo(x,y) ? "Equal" : "Not Equal"));
}
int main()
{
bar(0,1);
bar(4,4);
bar(3,2);
bar(9,9);
bar(-2,-2);
bar(-8,8);
return 0;
}
上述程序的输出是
0,1: Not Equal
4,4: Equal
3,2: Not Equal
9,9: Equal
-2,-2: Equal
-8,8: Equal
你能帮我理解函数()中的相等检查是如何工作的吗?foo
为什么当一个论点是肯定的而另一个是否定的时它会失败?function foo
() 中的解决方法是什么可以正确显示所有情况下的结果,即所有否定和肯定参数?
编辑:从下面的答案中,其他值的结果是:
70,72: Equal
-2,-2: Equal
64,64: Equal
128,32: Equal
256,250: Not Equal
250,256: Equal
-250,-256: Equal
请解释一下,为什么这种相等性检查适用于某些值集,而不适用于其他值集。里面发生了什么?