这个题目主要使用位运算的知识来解答,曾经是一个公司的面试题。
代码如下:
#include
int main ()
{
int a,b;
int R[2]={'<','>'};
int result;
printf("Please input two number:");
scanf("%d%d",&a,&b);
result=(a-b)>>(sizeof(int)*8-1);
printf("The result is:a %c b",R[result+1]);
getch();
return 0;
}
需要注意的如下:
- 实现原理:a-b,结果为正则a>b,为负则a<b,而整数在内存中存储的最高位为符号位,这样,左移整数在内存中所占位数-1,即可间接判断出结果。
- sizeof(int)*8的意思为int型整数所占内存空间的大小,单位是位,这样算增强了可移植性。
- 输出答案的方法,除了用判断可以输出不同的结果外,数组也可以实现相似功能。
十一月 19th, 2009
qiankjz