搜索
热搜: 活动 交友 discuz

Discuz! Board

 找回密码
 立即注册
查看: 72|回复: 0

C语言编程中的kone娱乐平台客户端const与define常量的区别与优劣

[复制链接]

41

主题

41

帖子

141

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
141
发表于 2018-8-17 20:38:49 | 显示全部楼层 |阅读模式
  所谓的宏,就是将某个无明确意义的值(例如,3.14159,知道的认为是圆周率,不知道的认为是某个奇怪的数字),定义为某个有明确意义的标识符(例如,PI,所有人都会认为是圆周率)。然后,就可以在代码中使用这个有意义的标识符,从而使代码更具可读性。
  其中,“宏名称”就是要定义的宏,通常用一个大写的有意义的名称来表示。“宏值”就是这个宏所代表的常量,它可以是一个常数、一个字符串,甚至是一个更加复杂的语句。比如,可以将值定义为一个宏PI:
  有了常量所对应的宏,就可以在代码中使用宏来代替常量进行相应的计算。例如:
  这里,kone娱乐平台官网使用了PI宏代替了原本应该使用的常量3.14159。宏的本质是一种替代。当预编译程序在处理源代码时,如果发现代码中使用了宏,就会用宏的值来代替宏。例如,kone娱乐平台官网,上面的代码会被分别修改为
  归根结底,还是在代码中多次使用了常量,只是预编译程序帮我们完成了部分繁琐的工作而已。 使用宏给常量一个名分,除了可以避免多次输入重复使用的常量之外,宏还进行超值大赠送,带来了一些额外的好处。
  通过对比发现,虽然两段代码实现的功能是一样的,但是给代码阅读者的信息不太相同。第一段代码只是表示这个循环是从0到100之间,至于为什么是从0到100,只有自己去猜测了。第二段代码通过宏的使用,明确地告诉了我们这个循环是在一个最小值和最大值之间进行的,这样可以从代码本身获得更加丰富的信息。
  宏让代码更加易于维护 如果需要修改某个在代码中被多次使用的常量,只需要修改宏的定义就可以了,而不用修改代码中所有的宏。例如,如果想提高圆周率的精度,只需要将宏定义修改为
  虽然宏的使用可以带来便利,但是因为它是在预处理的时候进行无条件的替换,并没有明确指定这个常量的数据类型,所以带来便利的同时也容易带来问题。C/C++使用另一种更加稳妥的方法来代替宏的这一功能,这就是const关键字。kone娱乐平台官网 变量的值是可以修改的,可以在定义变量的时候加上const关键字,让变量的值不可修改,从而成为常量。const关键字的使用格式如下:
  相比于变量的声明方式,我们只是在数据类型前加了const关键字,kone娱乐平台官方下载该关键字告诉编译器这条语句所定义的变量的值是不可修改的,也就是说,该变量可以当成常量来使用。需要注意的是,因为常量的值不可以修改,所以必须在定义常量的同时完成它的赋值。例如:
  使用const的常量一经定义后,就不能再进行修改,否则会产生编译错误。例如,如果想在程序中降低PI的精度,偷工减料是不行的,例如:
  这样给一个const修饰的变量赋值是不行的。正是编译器检查变量赋值,使得我们无法对const修饰的变量进行赋值,从而也就无法改变这个变量的值。既然变量的值无法改变,那么这个变量也就成了常量。kone娱乐平台官方下载, 既然宏和const关键字都可以用来给常量一个名分,那么该如何选择呢?到底是用宏还是用const关键字?应该更多地使用const关键字。比如,要定义PI这个常量,可以采用以下两种方式:
  这两种方式在语法上都是合法的,但是第二种方式要比第一种方式好,因为如果使用#define定义宏,PI会在代码的预编译阶段被预编译处理器替换成3.14159,宏的名称不会出现在符号表中,这样会给代码后期的调试带来麻烦,可能会遇到一个数字,却不知道它从何而来,这就是我们常说的Magic Number(像拥有魔力一样不知从何而来的数)。使用const定义,kone娱乐平台官方下载既可以保证PI值的唯一性,又便于调试,同时还可以对数据类型进行检查,借助编译器来减少错误的发生。所以,我们总是优先使用const关键字来定义常量。
  初学者有什么不懂的可以私信我,需要系统学习资料和系统学习框架图的同学,可关注小编头条号,kone娱乐平台官网欢迎留言评论和私信小编。【私信方法】文章上方处点击“作者头像”,进入作者首页,在作者主页上方点击“关注”旁边的“发私信”即可。私信内容:学习帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|kone娱乐平台官方下载官网隆重推出kone娱乐平台官网手机版【随时随地畅玩】

GMT+8, 2018-12-14 20:21 , Processed in 0.143830 second(s), 23 queries .

Powered by Discuz! X3.2

© 2010-2020 Comsenz Inc.

快速回复 返回顶部 返回列表