|
|
发表于 2006-9-9 14:53:52
|
显示全部楼层
Post by Arthur.Echo
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc,char *argv[])
- {
- int num1,num2;
- int i = 0;
- int tok =0;
- char result[3][32];
- if(argc != 3)
- {
- printf("Usage: cmp_int num1 num2\n");
- exit(1);
- }
- num1 = atoi(argv[1]);
- num2 = atoi(argv[2]);
- sprintf(result[0],"%d = %d",num1,num2);
- sprintf(result[1],"%d > %d",num1,num2);
- sprintf(result[2],"%d < %d",num1,num2);
- printf("The lagest int number is %d\n",~(1 << (sizeof(int) * 8 - 1)));
- printf("The lest int number is %d\n",1 << (sizeof(int) * 8 - 1));
- tok = (num1 >> 31) ^ (num2 >> 31); // = 0 if they have the same tok, else =-1;
- i = (((num1 >> 31) & tok) * 2) + ((num2 >> 31) & tok) + ((((num1 - num2) & (~tok)) >> (sizeof(int) * 8 - 1)) * 2) + (((num2 - num1) & (~tok)) >> (sizeof(int) * 8 - 1));
- printf("Result: %s\n",result[-i]);
- return 0;
- }
复制代码
我自己测了一下,没有发现问题,溢出解决了,没有用到比较操作符和if、switch等
大家找找问题看,谢谢 |
|