网页设计推荐网站,自己做的网站如何百度能搜索,网站建设需要域名服务器,关于网页设计前言#xff1a; 最基本的#define定义方式 #define可以定义宏#xff0c;这点相信大家并不陌生#xff0c;其定义的方式十分简单#xff0c;给大家随便来一个最简单、最基础的定义方式看看#xff1a;
#includestdio.h
#define a 3
int main()
{
printf( 最基本的#define定义方式 #define可以定义宏这点相信大家并不陌生其定义的方式十分简单给大家随便来一个最简单、最基础的定义方式看看
#includestdio.h
#define a 3
int main()
{
printf(%d,a);
return 0;
} 在这个代码中我们使用#define定义了a为3然后我们在主函数中打印a的值注意我们不需要创建a这个变量就可以直接将a打印并且语法完全正确没有任何警告和报错看似十分的神奇但这就是#define定义宏的最简单的定义方式。 稍加难度的定义方式 显而易见的是这种定义方式未免有点太简单了所以说能够实现的功能和使用的环境也是十分简单的但我们就了解这种简单的方式是远远不够的我们需要稍加深入的探讨一下#define的定义方式
#includestdio.h
#define sum(a,b) ab
int main()
{int x, y;scanf(%d%d, x, y);printf(%d, sum(x, y));return 0;
} 这就有点初步具有宏的样子了我们定义sum需要的值是a和b然后sum为ab这是什么意思呢其实不难——编译器将我们的代码跑起来需要经过预处理、汇编、链接等复杂的步骤这其中的内容很丰富我具体没有深入的研究但是有一点可以确定——在预处理的时候编译器就自动将我们#define定义的宏给替换了就用这个代码来说说——我们写到sumxy在预处理的时候编译器就会自动的将其改为sumxyaba就是xb就是y所以说sumxyxy打印的自然就是xy的值了。 #define中也可以包含函数 define中是可以包含函数的举个例子
#includestdio.h
#define a printf(hehe)
int main()
{a;return 0;
} 当我们使用a的时候在预处理的时候编译器就会将a改为printfhehe;所以说就会打印hehe还是十分的神奇但注意一点#define虽然可以包含函数但绝对不能进行递归操作 再加点难度的#define宏 让我们再开动一下脑筋加一点难度
#includestdio.h
#define sz(type) printf(hehe\t#type的大小为%d\n,(int)sizeof(type))
int main()
{sz(char);return 0;
}
//#define num(a,type) printf(thenumberis#a#type,a)
//int main()
//{
// num(2,%d);
// return 0;
//} 我们给sz这个宏传的是type数据类型然后通过sizeof操作符注意sizeof是操作符不是函数算出其大小并通过printf打印#define其实是起到了一个替换的作用在printf中打印#type就会被替换为你传过去的东西所以这串代码打印出来就是 同样的道理下面一个程序我们传过去一个数字和打印的格式预处理之后就会被替换成你传的数字和你想要打印的格式十分的方便。 #define的特殊用法
1.## 介绍一下#define中特殊的用法——##我认为算是特殊用法
#define like(a,b) a##b
int main()
{int hah 520;printf(%d, like(ha, h));return 0;
} 这个程序会输出520我们看宏——传的是两个值a、b而a##b的意思是将二者连起来相当于ab如果ab是两个字符串的话我们在主函数中定义变量hah为520然后打印likehah显而易见的是经过宏就已经成了hah 而hah就是520所以说自然会打印出520。而我们也可以知道##就是起到一个连接的作用。 2.类似if和else的用法 这个我不想多讲因为我不知道在实际运用中有什么价值还挺别扭的
int main()
{
#if 23printf(haha);
#endif
#if 2!3printf(hehe);
#endif
} 这个#if其实和if很像啊我就是像理解if一样来理解#if的但有点不同首先、有了#if就一定要有#endif不然编译器会报错其次、#if不能有变量之间的运算所以说#if完全没用if使用起来方便。 后记 其实说了这么多也学了这么多我总感觉#define定义宏和函数的调用有什么异曲同工之妙但其实想想各有优劣吧#define适合定义一些简单的运算当遇到一些简单的代码推荐使用#define定义宏来写。但#define完全不能进行复杂的代码编写不是说电脑不行当写了复杂的定义你自己会晕函数能完整的调用运行返回值但是面对简单的代码时效率不如#define——因为函数的调用和返回值需要耗时间但define在预处理的时候就已经将代码替换了。
所以说遇到复杂代码推荐使用函数。“因地制宜因材施教”将#define和我们学过的知识所结合才能够让我们的编程变得越来越好。