高手求教!C++问题!!此程序正确!但结果不理解!大家帮忙一下!!

#include<iostream.h>#definePI3.1415926#defineFUDGE(k)k+PI#definePR(a)cout<<"a="<<int(... #include<iostream.h>
#define PI 3.1415926
#define FUDGE(k) k+PI
#define PR(a) cout<<"a="<<int(a)<<"\t";
#define PRINT(a) PR(a);cout<<'\n';
#define PRINT2(a,b) PR(a);PRINT(b)
#define PRINT3(a,b,c) PR(a);PRINT2(b,c)
#define MAX(a,b) (a<b?b:a)
void main()
{
{
int x=2;
PRINT(x*FUDGE(2));
}
{
for(int cel=0;cel<=100;cel+=50)
PRINT2(cel,9.15*cel+32);
}
{
int x=1,y=2;
PRINT3(MAX(x++,y),x,y);
PRINT3(MAX(x++,y),x,y);
}
}
展开
 我来答
chichujn
2009-04-28 · TA获得超过663个赞
知道小有建树答主
回答量:1534
采纳率:50%
帮助的人:1185万
展开全部
永远不要用宏来做运算,最简单的运算也是会出错的.因为宏只是简单的代码替换.
=================================
#include<iostream.h>
#define PI 3.1415926
#define FUDGE(k) k+PI //注意这个宏中变量k没有加括号
#define PR(a) cout<<"a="<<int(a)<<"\t";
#define PRINT(a) PR(a);cout<<'\n';
#define PRINT2(a,b) PR(a);PRINT(b)
#define PRINT3(a,b,c) PR(a);PRINT2(b,c)
#define MAX(a,b) (a<b?b:a)
void main()
{
{
int x=2;
PRINT(x*FUDGE(2)); //替换成如下内容
//cout<<"a="<<int(x*2+3.1415926)<<"\t";
//cout<<"\n";
}
{
for(int cel=0;cel<=100;cel+=50)
PRINT2(cel,9.15*cel+32); //替换成如下内容,注意只有第一句是紧接for语句后面的,所以在for语句循环体内只有第一个语句!
//cout<<"a="<<int(cel)<<"\t";
//cout<<"a="<<int(9.15*cel+32)<<"\t";
//cout<<"\n";
}
{
int x=1,y=2;
PRINT3(MAX(x++,y),x,y); //替换成如下内容注意第一句后x++了,x为2
//cout<<"a="<<int(x++<y?y:x++)<<"\t";
//cout<<"a="<<int(x)<<"\t";
//cout<<"a="<<int(y)<<"\t";
//cout<<"\n";
PRINT3(MAX(x++,y),x,y); //同上,注意第一句后有两次x++,第二次是?:语句条件判断中的x++,第一次是判断条件后值为false,所以执行?:语句中冒号后的x++.并且MAX(x,y)值为第一次x++之后,第二次x++之前的值即3
}
}
百度网友9bb09c8
2009-04-28
知道答主
回答量:45
采纳率:0%
帮助的人:14.1万
展开全部
#include<iostream.h>
#define PI 3.1415926
#define FUDGE(k) k+PI
#define PR(a) cout<<"a="<<int(a)<<"\t"; //将a以整数格式输出并输出'/t',即省略小数点后面的
#define PRINT(a) PR(a);cout<<'\n'; //整数输出a后再加个回车
#define PRINT2(a,b) PR(a);PRINT(b) //调用前面两个宏..
#define PRINT3(a,b,c) PR(a);PRINT2(b,c) //还是调用前面的宏
#define MAX(a,b) (a<b?b:a) //取a和b的最大值

理解了这几个有参宏这段代码就很好解释了..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式