#define 的用法解析

来源:互联网 发布:java判断是否为节假日 编辑:程序博客网 时间:2024/05/14 07:00

这是我在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只是简单的替换而已,先替换,再计算。搞好先后顺序是关键。

暂时就这样吧,以后有问题再进行添加。








1 0
原创粉丝点击