帮帮忙,计算一个简单的C++程序

来源:百度知道 编辑:UC知道 时间:2024/06/20 21:23:39
#include <iostream.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A(x+y)<<endl;
}

我算的结果是16.5,但电脑编译的结果是13.5
我分析是;1.5*(5+6)
有问题吗
新手,刚学呢,有点傻哦

#define 是把所给的式子原样替换,而不是函数的概念
比如这里的A(x+y) x+y就是上面的a
替换完以后是 M*x+y, 编译器不会自动加括号的
所以计算出来是1.5*5+6 = 13.5
正确写法应该是 #define A(a) (M)*(a)
这才是标准写法,一定要记住~

...看仔细了,明明是1.5*5+6
用5+6替换a。。。没有括号
参数宏只做简单替换,不检查语法,看看书就可以了,所有的书都会提到的

你改成这样:(M)*(a),就符合你的期望了。