几个面试题

来源:互联网 发布:外网端口怎么开 编辑:程序博客网 时间:2024/04/30 22:32

笔者注:以下的题目均是笔者从各种书籍,网站搜罗而来,未能一一标明出处,请见谅。如有版权问题,请联系笔者,笔者会在最短时间内处理。

1.有两个变量a,b,不使用if,switch,?:或其他判断语句,找出两个数中的较大者。【美国某公司面试题】

int max = ((a+b) + abs(a-b))/2;

2.不用循环,用一个表达式判断整数X是否是2的幂数。

!(X&(X-1))/*若(X&(X-1)) == 0,则X是2的幂数,否则,不是。*/

3.不借助中间变量,实现a,b两个数的值的互换。

(1)/*a+b超界可能性*/a = a+b;b = a-b;a = a-b;(2)/*异或操作*/a = a^b;b = a^b;a = a^b;