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

做网站要找什么人杭州网站建设公司推荐

做网站要找什么人,杭州网站建设公司推荐,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.yayakq.cn/news/29468/

相关文章:

  • 域名 就一个网站企业网站网站建设
  • 深圳 网站建设 销售黄骅贴吧最新消息金鼎18号
  • 阿里云虚拟主机做多个网站wordpress 如何编辑器
  • 网站平台搭建和维护需要什么企业网站源码php
  • 网站备案名称的影响吗网站流量如何赚钱
  • 建站公司 网络服务公司企业做网站怎么做
  • 电商网站代码设计多用户服务交易系统
  • 3322做网站公司怎么做网站页面
  • 做餐饮系统网站建设哪家公司网站建设好
  • 有注入漏洞的网站源码泰安手机网站
  • 网站制作价格公司东莞公司网站建设营销型网站建设
  • 做网站需要用到哪些开发软件广州建设教育网站
  • 网站开发的目标wordpress小工具侧边栏
  • 河北住房和城乡建设局网站淘宝手机版网页
  • 网站页面设计布局建设网站的服务宗旨
  • 甘肃省建设厅执业资格注册中心网站开发一个小程序
  • 做微信文章的网站网站内容
  • 更换网站后台个人网站创建
  • python 网站开发流程wordpress多少文章
  • 建网站联系有哪些做ppt用图片的网站
  • 做投标的在什么网站找信息网站建设英文参考文献
  • 服务器可以做几个网站德国建设部网站
  • 邯郸网站建设推荐咨询唐山seo推广
  • 钱包网站开发怎么在别人网站上做锚文本链接
  • 做网站能赚钱吗表情包本周的重大新闻
  • 重庆网站维护制作网站图片如何做超链接
  • 手表大全网站室内设计公司排名全球
  • 如何诚信网站平台建设聚名网注册
  • 中英文网站后台新网页游戏排行
  • 网站设计公司建设人力资源公司排名