主题:紧急求助大家帮我修改这些程序
dppsoft [专家分:40] 发布于 2007-02-07 20:37:00
请大家帮我看一下这几个程序的运行结果为什么与我所分析的结果不一样
程序1如下:
#include<iostream.h>
#include<stdlib.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A(x+y)<<endl;
system("PAUSE");
}
系统运行结果:13.5
而我分析的结果为什么是:16.5(因为1.5*(5+6)的结果是16.5)
程序2如下:
#include<iostream.h>
#include"f1.cpp"
void main()
{
int a(5),b;
b=f1(a);
cout<<b<<endl;
system("PAUSE");
}
f1.cpp文件内容如下:
#define M(m) m*m
f1(int x)
{
int a(3);
return -M(x+a);
}
系统运行结果:10
而我分析的结果为什么是:64
程序2中,我还有一疑问不理解的是:return -M(x+a);语句中的“-”符号有没有用,如果有用的话,那有何作用。
请大家帮我指点哦,谢谢咯
回复列表 (共9个回复)
沙发
ouwen958 [专家分:30] 发布于 2007-02-13 14:13:00
小生愚昧,看看这样是不是你要的结果
#include<iostream.h>
#include<stdlib.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A((x+y))<<endl;
system("PAUSE");
}
板凳
ouwen958 [专家分:30] 发布于 2007-02-13 14:26:00
F1(5)=5*m
m=-M(5+3)=2
也许是这样的吧
3 楼
hzlajx [专家分:1310] 发布于 2007-02-13 23:03:00
问题一:是一个宏问题,
#include<iostream.h>
#include<stdlib.h>
#define M 1.5
#define A(a) M*a//如果要得到你分析的结果的话,就这样定义宏#define A(a) M*(a)
int main()//规范使用main,void main()用法是不存在的
{
int x(5),y(6);
cout<<A(x+y)<<endl;//这里展开的话的应该是M*5+6,这个嘛当然等于13.5
system("PAUSE");
return 0;
}
4 楼
hzlajx [专家分:1310] 发布于 2007-02-13 23:17:00
#include<iostream.h>
#define M(m) m*m //如果这里改成(m)*(m),下面展开就-(5+3)*(5+3)
int f1(int x)
{
int a(3);
return -M(x+a);//这个"-"符号就是取负数的意思,和数学的一样
}
int main()//规范使用main
{
int a(5),b;
b=f1(a);
cout<<b<<endl;//结果为-5+3*5+3=13啊
system("PAUSE");
return 0;
}
最后结果是13,不是10,可能楼主写错了哦
5 楼
dppsoft [专家分:40] 发布于 2007-02-20 10:38:00
谢谢,我好像理解了,这样子cout<<A((x+y))<<endl;
改了以后就可以得到16.5的结果,但为什么这样子cout<<A(x+y)<<endl;
写的话它就会这样子去执行1.5*5+6的结果是13.5,而不是把它(x+y)看成一个整体a,请1 楼 主人继续帮我讲解一下,谢谢了
6 楼
dppsoft [专家分:40] 发布于 2007-02-20 10:40:00
谢谢,我好像理解了,这样子cout<<A((x+y))<<endl;
改了以后就可以得到16.5的结果,但为什么这样子cout<<A(x+y)<<endl;
写的话它就会这样子去执行1.5*5+6的结果是13.5,而不是把它(x+y)看成一个整体a,请1 楼 主人继续帮我讲解一下,谢谢了
7 楼
dppsoft [专家分:40] 发布于 2007-02-20 11:08:00
非常谢谢一楼三楼给我作的满意答复,特别是三楼的回复讲得很仔细哦,现在我已非常理解这两个题目了,谢谢啦,希望以后多多指点我哦
8 楼
ouwen958 [专家分:30] 发布于 2007-02-25 11:11:00
我想知道例2是10还是13??
9 楼
dppsoft [专家分:40] 发布于 2007-02-25 15:21:00
最后结果是13,不是10,确实是我写错了的
我来回复