关于max(a,b)宏定义的问题
使用宏来实现一个max的版本,max的参数都是整数,要求在max宏的定义中这些整形参数只被求一次。一般来说
#define max(a,b) ((a)>(b)?(a):(b))
但是这在判断的时候使用了一次,在取值的时候又求了一次。当参数有副作用的时候,可能会出一些问题。
我觉得这个有点难了。求大神出现。
2017-07-18 09:37

2017-07-18 10:19

2017-07-18 10:23
程序代码:#define max( a, b ) \
({ typeof ( a ) _a = ( a ); \
typeof ( b ) _b = ( b ); \
_a > _b ? _a : _b; })
程序代码:#include <stdio.h>
#define max( a, b ) \
({typeof ( (a) ) _a = ( a ); \
typeof ( (b) ) _b = ( b ); \
_a > _b ? _a : _b;})
int
main(void)
{
int x, y,z;
x = 5;
y = 6;
z = max(x++, ++y);
printf("%d",z );
return 0;
}[此贴子已经被作者于2017-7-18 12:29编辑过]

2017-07-18 11:26
2017-07-18 23:59

2017-07-19 06:32