当前位置: 首页 > news >正文

官网的网站开发费用yande搜索引擎官网入口

官网的网站开发费用,yande搜索引擎官网入口,wordpress怎么屏蔽注册链接,少儿编程网站前言&#xff1a; 最基本的#define定义方式 #define可以定义宏&#xff0c;这点相信大家并不陌生&#xff0c;其定义的方式十分简单&#xff0c;给大家随便来一个最简单、最基础的定义方式看看&#xff1a; #include<stdio.h> #define a 3 int main() { printf(&quo…

前言:   

最基本的#define定义方式 

           #define可以定义宏,这点相信大家并不陌生,其定义的方式十分简单,给大家随便来一个最简单、最基础的定义方式看看:

#include<stdio.h>
#define a 3
int main()
{
printf("%d",a);
return 0;
}

        在这个代码中,我们使用#define定义了a为3,然后我们在主函数中打印a的值,注意,我们不需要创建a这个变量,就可以直接将a打印,并且语法完全正确,没有任何警告和报错,看似十分的神奇,但这就是#define定义宏的最简单的定义方式。 

稍加难度的定义方式

        显而易见的是,这种定义方式未免有点太简单了,所以说能够实现的功能和使用的环境也是十分简单的,但我们就了解这种简单的方式是远远不够的,我们需要稍加深入的探讨一下#define的定义方式:

#include<stdio.h>
#define sum(a,b) a+b
int main()
{int x, y;scanf("%d%d", &x, &y);printf("%d", sum(x, y));return 0;
}

        这就有点初步具有宏的样子了,我们定义sum,需要的值是a和b,然后sum为a+b;这是什么意思呢,其实不难——编译器将我们的代码跑起来需要经过预处理、汇编、链接等复杂的步骤,这其中的内容很丰富,我具体没有深入的研究,但是有一点可以确定——在预处理的时候,编译器就自动将我们#define定义的宏给替换了,就用这个代码来说说——我们写到sum(x,y),在预处理的时候,编译器就会自动的将其改为sum(x,y)==a+b,(a就是x,b就是y),所以说sum(x+y)=x+y;打印的自然就是x+y的值了。

#define中也可以包含函数 

        define中是可以包含函数的,举个例子:

#include<stdio.h>
#define a printf("hehe")
int main()
{a;return 0;
}

        当我们使用a的时候,在预处理的时候编译器就会将a改为printf("hehe");所以说就会打印hehe,还是十分的神奇,但注意一点,#define虽然可以包含函数,但绝对不能进行递归操作!

 

再加点难度的#define宏

        让我们再开动一下脑筋,加一点难度:

#include<stdio.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,然后打印like(ha,h),显而易见的是,经过宏,就已经成了hah ,而hah就是520,所以说自然会打印出520。而我们也可以知道##就是起到一个连接的作用。

2.类似if和else的用法

        这个我不想多讲,因为我不知道在实际运用中有什么价值,还挺别扭的:

int main()
{
#if 2==3printf("haha");
#endif
#if 2!=3printf("hehe");
#endif
}

        这个#if其实和if很像啊,我就是像理解if一样来理解#if的,但有点不同:首先、有了#if就一定要有#endif,不然编译器会报错;其次、#if不能有变量之间的运算,所以说#if完全没用if使用起来方便。

后记 

        其实说了这么多,也学了这么多,我总感觉#define定义宏和函数的调用有什么异曲同工之妙,但其实想想各有优劣吧:#define适合定义一些简单的运算,当遇到一些简单的代码,推荐使用#define定义宏来写。但#define完全不能进行复杂的代码编写(不是说电脑不行,当写了复杂的定义,你自己会晕);函数能完整的调用,运行,返回值,但是面对简单的代码时,效率不如#define——因为函数的调用和返回值需要耗时间,但define在预处理的时候就已经将代码替换了。

所以说遇到复杂代码推荐使用函数。“因地制宜,因材施教”将#define和我们学过的知识所结合,才能够让我们的编程变得越来越好。

 

http://www.shuangfujiaoyu.com/news/33258.html

相关文章:

  • 唐山做网站建设公司长沙网红奶茶
  • 哪个网站做外贸年费比较便宜百度小说app
  • 网站主体注销seo外链
  • 重庆做网站电话北京百度网讯科技有限公司
  • it行业培训机构一般多少钱seo网站外包公司
  • 网站可以做无形资产青岛seo公司
  • 视频聊天室网站开发武汉seo收费
  • 做注册任务赚钱的网站电商网站开发平台
  • 黄石网站建外链发布工具
  • 去除 做网站就用建站之星软文台
  • 广州专门做网站的公司北京网站优化培训
  • 网站免费建站叉手谷歌seo网站运营
  • 网站建设手机端官网朝阳seo建站
  • 做旅游宣传图的网站有哪些软文范例大全1000字
  • 广州网站建设大公司seo简单优化
  • 江门网站制作维护网站模板免费下载
  • 微商怎么引流被别人加app排名优化
  • 做网站怎么导入源码郑州网站建设推广
  • 外贸网站建设维护手机流畅优化软件
  • 北京建设执业网站平台推广费用
  • 上饶网站建设企业外包公司的优势和劣势
  • 简洁中文网站模板下载网络销售新手入门
  • 建设银行租房网站建立免费个人网站
  • 专业的网站首页建设公司seo网站优化软件价格
  • 重庆网站建设哪家有手机百度登录入口
  • php做的购物网站系统下载seo课程培训视频
  • 天津武清做网站的公司网站模板哪里好
  • 有什么网站做可以国外的生意站长工具seo查询
  • 简约 时尚 高端 网站建设百度一下网页入口
  • jsp做网站最近一周的重大热点新闻