C/C++题目--位运算

题目:有这样一个巧妙的表达式:

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

 

 

 

猜你喜欢

转载自blog.csdn.net/chen1083376511/article/details/92001876
今日推荐