乌鲁木齐镀锌铁丝: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)
楼上解释的不错,就是这个样子
神马品牌网是一部内容开放、自由的互动网络百科全书
客观、专业、权威的知识性百科全书
来源:百度文库 编辑:神马品牌网 时间: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)
楼上解释的不错,就是这个样子