带参数宏定义的几种形式

 1、
#define SQ(y) (y)*(y)
#include<iostream.h>
void main()
{
	int a,sq;
	cout<<"input a number:";
	cin>>a;
	sq=SQ(a+1);
	cout<<"sq="<<sq<<endl;
}


当输入一个2时,可以看到结果:

 

2、

#define SQ(y) y*y
#include<iostream.h>
void main()
{
	int a,sq;
	cout<<"input a number:";
	cin>>a;
	sq=SQ(a+1);
	cout<<"sq="<<sq<<endl;
}

当输入一个2时,可以看到结果:


3、

#define SQ(y) (y)*(y)
#include<iostream.h>
void main()
{
	int a,sq;
	cout<<"input a number:";
	cin>>a;
	sq=16/SQ(a+1);
	cout<<"sq="<<sq<<endl;
}

当输入一个3时,可以看到结果:

 

4、

#define SQ(y) ((y)*(y))
#include<iostream.h>
void main()
{
	int a,sq;
	cout<<"input a number:";
	cin>>a;
	sq=16/SQ(a+1);
	cout<<"sq="<<sq<<endl;
}

当输入一个3时,可以看到结果:



造成以上结果不同的原因是因为宏定义中的字符串代换只做符号代换而不作其他处理。

1中:sq=(a+1)*(a+1);

2中:sq=a+1*a+1;

3中:sq=16/(a+1)*(a+1);

4中:sq=16/SQ((3+1)*(3+1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值