博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
宏定义交换两个变量值的陷阱
阅读量:4098 次
发布时间:2019-05-25

本文共 301 字,大约阅读时间需要 1 分钟。

宏定义交换两个变量,没有中间暂存变量的一种方法如下:

#define swap(a,b) {a ^=b; b ^=a; a ^=b;}

如果a和b是两个不同的变量时,这样写是没有问题的,但是我们在给数组排序时可能会交换数组中两个元素的值,swap(array[i], array[j]), 当i==j 时,就会出现两个变量相同的情况了,这时调用这个宏交换后array[i] = 0 了,可以理解为 swap(array[i], array[i])   array[i] ^= array[i];array[i] ^= array[i];array[i] ^= array[i];这样异或运算的结果就是0了。

转载地址:http://ojmii.baihongyu.com/

你可能感兴趣的文章
谈谈加密和混淆吧[转]
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
STM32CubeMX 真的不要太好用
查看>>
不要买铝合金机架的无人机,不耐摔,易变形弯曲。
查看>>
ACfly也是基于FreeRTOS的
查看>>
realsense-ros里里程计相关代码
查看>>
似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
Git操作清单
查看>>
Flutter Boost的router管理
查看>>
ES7 await/async
查看>>