这是我在SCDN上的第一篇文章,哇哇,有那么点小小的高兴呢。呜呜~~~~,说废话是不太好的,开始主题吧。
#define经常被用到,为什么用到就不能我说了吧。下面我们用几个简单的程序例子来说明问题。
1:
#include “stdio.h”
#define pi 3.1415926 //注意没有任何符号而且不在任何函数体内,???因为本来就是简单的字符串替换呀,放到函 //数体内难道是要执行吗,回答是否定的。
2:
void main(void)
{
float a;
a=1+pi;
printf("结果为%f",a);
}
/***************上面是没有什么问题的,但是下面****************/
#include <stdlib.h>
#define pi 2+2
void main(void)
{
float a=0.0;
a=pi*pi;
printf("结果为:%f\n",a);
system("pause");
}
/****上面就有问题了,结果怎么会为8呢??不是应该为16么。唯一的解释就是a=2+2*2+2=8;
所以想要有你预想的结果就应该这样a=(pi)*(pi);经过这样的更改后,果然是这样呀。
*******/
3:
下面我们来讨论下带参数的宏定义如下
#define a(x,y) x*y
这是可以当作一个函数来运用的,当你用x=a(5,7),将会得到x等于35的结果,但是你如果调用
result=a(2+2,2+2),结果不会是16,也是8,原因如上面提到的一样。#define只是简单的替换而已,先替换,再计算。搞好先后顺序是关键。
暂时就这样吧,以后有问题再进行添加。