乌鲁木齐镀锌铁丝:C语言:有宏定义:#define POWER(x) x*x则在任何情况下计算会不会引起二义性?为什么?

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 03:02:13

int a=1,b=2,c;
c=a+b;

POWER(a+b)的值为5;
POWER(c)的值为9;

POWER(a+b)=a+b*a+b

所以会有二义性

因为宏定义只是简单的字符串替换罢了。可以写成#define POWER(x) (x*x)

楼上解释的不错,就是这个样子