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;