catch 发表于 2014-10-12 08:27:39

比较大写为什么要这样写?

#define MIN(a,b) ({typeof (a) _a = (a); typeof (b) _b = (b); (_a < _b) ? _a : _b; })

catch 发表于 2014-10-16 18:21:07

本帖最后由 catch 于 2014-10-16 18:26 编辑

这是因为为了排除一些不必要的Bugs:

比如:

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


int x = max (a++, b--);


int x = ((a++) > (b--) ? a++ : b--);


很明显,这不是你想要的结果.



#define MAX(a,b) ({typeof (a) _a = (a); typeof (b) _b = (b); (_a < _b) ? _a : _b; })


int x = ({ int _a = a++; int _b = b--; _a > _b ? _a : _b; })


终于明白了~

页: [1]
查看完整版本: 比较大写为什么要这样写?