关于带参数的宏
(1)#define AREA(x,y) (x)*(y)(2)#define ABS(a) ((a)<0?-(a):a)
上面两个宏定义,书上说定义有问题,让找出来。各位路过的能看出来的给点帮助,谢谢。
第二题让假定参数无副作用,那就应该不是ABS(x++)这种问题。 The problem is the lack of parentheses around the replacement list.
For example,
a = 1/AREA(b, c);
becomes
a = 1/(b)*(c);
Here's the corrected macro:
#define AREA(x,y) ((x)*(y))
#include <stdio.h>
#define ABS(a) ((a) < 0? -(a) : a)
int main(void) {
printf("%d", ABS((unsigned)-1));
unsigned a=(unsigned short)(-1);
printf("\n%d",a);
return 0;
}
我在网上找到答案了,大家看看。 这个帖子怎么结呢? jiuyuan 发表于 2019-8-17 08:23
这个帖子怎么结呢?
随便找一条回复设为最佳答案
页:
[1]