欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用参数的C语言宏定义:f(X)

最编程 2024-08-08 14:03:51
...

在以上知识点总结7里面,有很多同学对宏定义的理解还不是很透彻,今天以一个例题深入分析一下。没复习到的同学可以查看上面链接先熟悉一下。

首先,什么是宏定义?

2.知识点:不带参数的宏定义l 一般形式:#define 宏名 字符串(或数值)即用字符串或数值取代宏名。l 宏名一般采用大写字母表示,以与变量名区别,也可用小写字母。l 宏定义不是C语句,不必在行末加分号。l 对程序中用“”括起来的字符串内的字符,即使与宏名相同,也不进行置换。l 宏定义可以嵌套使用,例如:#define R 3.0#define PI 3.14159#define L 2*PI*R

3.知识点:带参数的宏定义l 一般形式:#define 宏名(参数表) 字符串l 带参数的宏不占运行时间,只占编译时间;只是简单、机械字符替换;宏名无类型。l 要注意有括号和没括号的区别

不带参数的宏定义比较简单,我们今天讲的是带参数的。最后红色字体提到有括号、没括号的区别。那提一个问题:怎么用宏定义表示数学上的函数 f(x)=x*x ?

有同学会说,这不简单,顺手就来:

#define f(X)  X*X 

但是,忽略了一点,宏代换是直接进行代换的。

定义

实际为

int a = f(3);

int a = 3*3;

int a = f(3+1);

int a = 3+1*3+1;

int a = f((3+1));

int a = (3+1)*(3+1);

我们在宏定义的时候尽量就避免这个问题,使用带参数的宏时,要注意参数要带上括号,最好整个宏也要带上括号:

#define f(X)  ((X)*(X))

否则,容易误导别人的同时,自己也容易出错。实际编程中,这种问题遇到的很少,一般都使用函数代替,不会有这种问题,考试时候遇到的话,只能直接带进去看了。


本公众号资源在QQ群文件群共享也可下载。

学习有困难怎么办,快来加入微信群和大家交流吧。

推荐阅读