幻数——上下文里出现的字面常量。

幻数带来的主要问题是它们没有(抽象)语义。当我们阅读和维护带有幻数的代码时,不得不去一个个地搞清楚每个光秃秃的量到底代表的是什么意思。没错,这样也能勉强度日,但带来的是不必要的精力浪费以及准确性的丧失。

//这里的一些10分别代表什么意思??

class Portfolio

{

//...

Contact *contracts_[10];

char id_[10];

};

......

for (int i = 0; i < 10; ++i)

...

幻数的另一个不那么显而易见的坏处就是它会以意想不到的方式降低它所代表的类型的精度。

例如:4000, 它实际类型是平台相关的。

另一个字面常量带来的潜在威胁来源于它们没有地址。

给幻数起一个名字。作为一个指导原则,除了0和1之外,程序里出现的任何数大概都可以算作幻数,它们应该有自己的名字。

class Portfolio

{

//...

enum {maxContracts = 10, idLen = 10};

Contact *contracts_[maxContracts ];

char id_[idLen ];

};

在其所在作用域有着明确含义的枚举常量,有着不占空间,也没有任何运行期成本的巨大优点。

把数定义为常数,不要定义为宏。C语言的传统方式是使用#define行来对付幻数。C语言预处理程序是一个强有力的工具,但是它又有些鲁莽。使用宏进行编程是一种很危险的方式,因为宏会在背地里改变程序的词法结构。我们应该让语言去做正确的工作(C预处理命令本身不是C语言的组成部分)。

在c/c++里,整数常数可以用枚举语句声明。在C++里,任何类型都可以使用const声明的常数:

const int MAXROW = 24, MAXCOL = 80;

在Java里,可以用final声明:

static final int MAXROW = 24, MAXCOL = 80;

C语言也有const值,但是他们不能用作数组的界。这样,enum就是C中唯一可用的选择了。

幻数java题_幻数相关推荐

  1. 幻数java题_关于数组中的幻数?:数组中的幻数? -C ++

    我是一个相当新的程序员,如果无法轻松获得此信息,我感到抱歉,我只是无法找到它. 这是我的问题: 当您使用文字数字访问数组的特定元素时,是否被视为幻数? 例如: arrayOfNumbers[6] // ...

  2. 幻数java题_诗意代码 – PoemCode

    读K&R之幻数.返回值和参数传递 Dennis M. Ritchie 直到不久前,我都不曾认真地了解过C.大学课堂上学习过C++,在那段不长的时间里,学到的东西一直支撑着我对C的认知.等工作五 ...

  3. 幻数java题_java – 公式中的幻数

    这是一个完善的惯例,应避免使用魔法数字.但复杂的条件公式中的幻数呢?例如: int result = 0; if (level <= 50) { result = (int) (Math.pow ...

  4. 幻数java题_java – ConcurrentModificationException的幻数

    首先要知道的是(如 JLS所述)以下增强的for循环: for (String s : list) { // Do something with s } 相当于: for (Iterator it = ...

  5. acm java题_【转】ACM中java的使用

    ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...

  6. i10在java中什么意思啊,java题库_JAVA题库的题 求答案啊!!!!!!!!!!!!!!!!_淘题吧...

    ⑴ JAVA题库的题 求答案啊!!!!!!!!!!!!!!!! 1.有点没太明白意思,是要求2个数相加的和吗? 导入Java.util.扫描仪: 公共类应用程序1 /** * @param参数 */ ...

  7. Java编程题_面向对象和常用API01_B级

    Java编程题_面向对象和常用API01_B级 第1题 面向对象.异常.集合.IO 题干: 请编写程序,完成键盘录入学生信息,并计算总分将学生信息与总分一同写入文本文件 需求:键盘录入3个学生信息(姓 ...

  8. java程序设计清考_面向对象程序设计(Java)-题库

    <面向对象程序设计(Java)-题库>由会员分享,可在线阅读,更多相关<面向对象程序设计(Java)-题库(33页珍藏版)>请在金锄头文库上搜索. 1.面向对象程序设计 (ja ...

  9. JAVA入门_多线程_邮局派发信件

    JAVA入门_多线程_邮局派发信件 Postman package cn.campsg.java.experiment.entity;public class Postman {private Str ...

最新文章

  1. mysql设置远程访问
  2. python3.7 6如何安装-Python 3.7.1在CentOS 6.10 安装部署
  3. 教怎样写好一份“漏洞报告”
  4. python2:function
  5. 客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...
  6. 内置函数补充 之 反射
  7. bzoj 1974: [Sdoi2010]代码拍卖会
  8. wpf项目中类库内新建用户控件和自定义控件的问题
  9. Android系统(122)---MTK 平台如何打开ActivityManagerService的debug开关
  10. 《Photoshop Lightroom4 经典教程》—第1课复习题答案
  11. python动态视频下载器
  12. 将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML
  13. Fortan中读取数据到text文件
  14. 【教程】MFC到Delphi的皮肤移植
  15. BurpSuite CA证书安装(拦截HTTPS协议)
  16. Add Binary 二进制求和
  17. 合并多个 .ts 文件为单个 .mp4 解决方案
  18. 软件架构师的能力与特
  19. orb-slam系列 LoopClosing线程 ComputeSim3(十一)
  20. 病毒预报:Trojan_Generic.F

热门文章

  1. 设置了相对定位relative之后,改变top值,如何去掉多余空白?
  2. 知道maven地址,如何在maven官网下载jar包
  3. 【矩阵论】2. 矩阵分解——SVD
  4. scipy.sparse求稀疏矩阵前k个特征值
  5. 三角定位法java代码_GitHub - megagao/IndoorPos: 这是一个采用蓝牙4.0--iBeacon技术的室内定位服务端程序。...
  6. DBCC CHECKDB用法 手工修复数据库
  7. 使用Cerebro管理ES集群
  8. 2023年长安大学油气田地质与开发考研上岸前辈备考经验
  9. 微信投放卡券-支付即会员
  10. flannel vxlan切换成host-gw