比较大写为什么要这样写?
#define MIN(a,b) ({typeof (a) _a = (a); typeof (b) _b = (b); (_a < _b) ? _a : _b; })本帖最后由 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]