优雅的c语言宏定义比较大小

写一个宏定义,返回两个数中较大的一个。相信绝大部分同学都能闭着眼睛写出来,但闭着眼睛写的真的对吗,怎么样写可以做到极致的优雅,适用几乎所有应用场景。

幼儿园写法:

#define MAX(a, b) a > b ? a : b

小学写法:

#define MAX(a, b) (a) > (b) ? (a) : (b)

初中写法:

#define MAX(a, b) ((a) > (b) ? (a) : (b))

高中写法:

#define MAX(a, b) ({       \
        int _a = a;        \
        int _b = b;        \
        _a > _b ? _a : _b; \
    })

本科写法:

#define MAX(type, a, b) ({  \
        type _a = a;        \
        type _b = b;        \
        _a > _b ? _a : _b;  \
    })

硕士写法:

#define MAX(a, b) ({        \
        typeof(a) _a = a;   \
        typeof(b) _b = b;   \
        (void)(&_a == &_b); \
        _a > _b ? _a : _b;  \
    })

你可能感兴趣的:(优雅C语言系列,c语言,开发语言)