两个注意点
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;
/*
*
* Copyright (c) 2011 Ubunoon.
* All rights reserved.
*
* email: netubu#gmail.com replace '#' to '@'
* http://www.cnblogs.com/ubunoon
* 欢迎来邮件定制各类验证码识别,条码识别,图像处理等软件
* 推荐不错的珍珠饰品,欢迎订购 * 宜臣珍珠(淡水好珍珠) */
*
* Copyright (c) 2011 Ubunoon.
* All rights reserved.
*
* email: netubu#gmail.com replace '#' to '@'
* http://www.cnblogs.com/ubunoon
* 欢迎来邮件定制各类验证码识别,条码识别,图像处理等软件
* 推荐不错的珍珠饰品,欢迎订购 * 宜臣珍珠(淡水好珍珠) */