代码改变世界

两个注意点

2007-05-08 23:11  ubunoon  阅读(153)  评论(0编辑  收藏  举报

1、整型数相除存在舍去余数的问题。

   1+2+3+.....+ n = (1+n)*n/2

  如果用整数直接相除显然存在问题。正确解法为:

 if(n%2 == 0)
    sum = (1+n)*(n>>2); 
 else
    sum = ((1+n)>>2)*n;

2、两个数相交换

第一种方法:

   a = a + b;
   b = a - b;
   b = a - b;

存在溢出

第二种方法:

   a ^ = b;
   b ^ =a;
   a ^ = b;