题目如下:
14、如下函数,在32bit 系统foo(2^31-3)的值是:
int foo(int x)
{
return x&-x;
}
A.0 B.1 C.2 D.4
题目解析:在C++中,没有幂指数的运算符,求一个数的幂使用pow(x,y)来实现的,所以此处的x^y指的是x与y的异或运算。
题中将2^31-3整体带入函数内,可得到
return 2^31-3&-2^31-3;
按照运算符优先级顺序,1)- 负号; 2) - 减号; 3)&; 4) ^ 异或
执行顺序如下,
<1> 31 - 3 = 28 return 2^28&-2^28;
<2> 28 & (-2) = 28 return 2^28^28;
<3> 28 ^ 28 = 0 return 2^0;
<4> return 2;
因此,答案选 C