今天特别不想看技术贴,懒了

awpatp 2007-12-14 05:54:02
今天小A我都在非技术区里闲逛,灌水,是不是很无聊呀?呵呵
散点分给大伙儿吧。不多,就一百。
别说咱的贴白看,一点技术含量都没有,那咱就给大伙儿一块小饼干吧。
交换两个整数,不用第三个变量的小函数,大家试试看吧! ^_^
void inplace_swap(int *x, int *y)
{
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
}

...全文
409 69 打赏 收藏 转发到动态 举报
写回复
用AI写文章
69 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2007-12-17
  • 打赏
  • 举报
回复
我也实验过,在我的机器上也同样没有问题。
但也不能忽视:C和C++语言都没有明确规定带符号运算发生溢出时,计算结果应该是什么,因此,至少理论上它有“巧合性”。
yu_xm 2007-12-17
  • 打赏
  • 举报
回复
a = a + b;
b = a - b;
a = a - b;

*x = *x - *y;
*y = *x + *y;
*x = *y - *x;
都可能有溢出的,但溢出对结果没影响
如果有溢出发生的话,那么这三个表达式都同时发生溢出,对结果无影响
fang235one_ 2007-12-17
  • 打赏
  • 举报
回复
hailai
fang235one_ 2007-12-17
  • 打赏
  • 举报
回复
jf
fang235one_ 2007-12-17
  • 打赏
  • 举报
回复
jei
ynZhen 2007-12-17
  • 打赏
  • 举报
回复
a = a + b;
b = a - b;
a = a - b;

这样加减是不行的
没考虑溢出!!!!
kojie_chen 2007-12-17
  • 打赏
  • 举报
回复
jf
晨星 2007-12-17
  • 打赏
  • 举报
回复
用加减法的话,在发生溢出时,结果是未定义的。
就呆在云上 2007-12-17
  • 打赏
  • 举报
回复
呵呵
不错
NKLoveRene 2007-12-17
  • 打赏
  • 举报
回复
接分接分
NKLoveRene 2007-12-17
  • 打赏
  • 举报
回复
-_-!
lololan 2007-12-17
  • 打赏
  • 举报
回复
我也来接分了。。。 呵呵 楼主的倒是还不算很新鲜 加减的好像没注意过。。。
chlaws 2007-12-16
  • 打赏
  • 举报
回复
给分不杀。
否则见血。
哈哈。
wangxipu 2007-12-16
  • 打赏
  • 举报
回复
54楼的和之前他们讨论的a,b的加减的那种方法有什么不同吗?
都是引用值的操作
xhd3767 2007-12-16
  • 打赏
  • 举报
回复
楼上的和直接加减没有什么区别的,没有含量的,顶lz
yu_xm 2007-12-16
  • 打赏
  • 举报
回复
方法应该有很多的 大家一起来
yu_xm 2007-12-16
  • 打赏
  • 举报
回复
貌似下面的也可以
*x = *x - *y;
*y = *x + *y;
*x = *y - *x;


ppchiu 2007-12-16
  • 打赏
  • 举报
回复
hehe!
十八道胡同 2007-12-16
  • 打赏
  • 举报
回复
hehe
thecorr 2007-12-16
  • 打赏
  • 举报
回复
顶一下 揭贴吧`~~
加载更多回复(48)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧