c/c++ max/min 4种实现方法
2017-07-10 12:02
295 查看
1. 简单的宏实现
3. 使用内联函数实现
4. c++ 使用 algorithm 提供的 max/min
#define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b))2. 内核的宏实现
/* safe min & max */ /* avoid ++/-- expand twice */ /* compile warning if type diff */ #define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) #define max(x, y) ({ \ typeof(x) _max1 = (x); \ typeof(y) _max2 = (y); \ (void) (&_max1 == &_max2); \ _max1 > _max2 ? _max1 : _max2; })Linux 内核的实现是安全的,避免了 ++/-- 计算多次,而且会在编译时警告参数为不同的类型
3. 使用内联函数实现
// 内联函数要先声明 inline int max(int a, int b); inline int min(int a, int b); int max(int a, int b) { return (a > b ? a : b); } int min(int a, int b) { return (a < b ? a : b); }其实不使用 inline 关键字也可以,因为大多数编译器会自动把短小的函数转成内联类型(手动声明更好)
4. c++ 使用 algorithm 提供的 max/min
#include <algorithm> std::max(2, 3); std::min(2, 3);
相关文章推荐
- 含有max或min方法的栈实现
- matlab imregionalmax/imregionalmin 函数 C++实现
- c++ 各种求min/max方法效率测试
- C#实现输入10个数存入到数组中并求max和min及平均数的方法示例
- 让IE6支持min-width和max-width的方法(JS实现) + (CSS实现)
- Java实现文件拷贝的4种方法.
- 探索c++的函数pow()的实现方法·数学与程序设计的结合(zz)
- Visual C++6.0实现动态曲线4种方法
- C++模板应用——让模板定义和实现分离的方法
- 在C++中实现文件的读写的基本方法
- 转:使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C++Builder/Delphi中透明Panel及透明窗口的实现方法
- 在C++中实现文件的读写的基本方法
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- ie6实现min-width/max-width
- Singleton在C++中的两种实现方法
- 探索c++的函数pow()的实现方法·数学与程序设计的结合(绝对原创)
- 模拟实现VC中的handle的c++方法,欢迎指正~~~
- (轉貼) C++接口与实现分离的2种方法 (C/C++)
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法