题目:有这样一个巧妙的表达式:
a^=b^=a^=b;
它不需要临时变量就可以交换a和b的值。
【答案】
这不具有可移植性。它试图在序列点之间两次修改变量a,而这种行为是未定义的。例如,有人报告如下代码:
int a=123,b=7654;
a^=b^=a^=b;
在SCO优化C编译器下会把b置为123,把a置为0。
题目:取一个整数a从右端开始的4~7位。
【答案】
-
main()
-
{
-
unsigned a,b,c,d;
-
scanf("%o",&a);
-
b=a>>4;
-
c=~(~0<<4);
-
d=b&c;
-
printf("%o\n%o\n",a,d);
-
-
}
题目:一条语句实现x是否为2的若干次幂的判断。
【答案】
-
void mai n()
-
{
-
i nt a;
-
scanf(“%d”,&a);
-
printf(“%c”,(a)&(a-1)?’n’:’y’); // 若是打印y,否则n
-
}
题目:求下面函数的返回值(微软)
-
int fun(x)
-
{
-
int countx=0;
-
while(x)
-
{
-
countx++;
-
x=x&(x-1);
-
}
-
return countx;
-
}
假定x=9999。
【答案】
8