magic number 在编程中是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了magic number 在编程中是啥意思?相关的知识,希望对你有一定的参考价值。
magic number: 魔法数. 指不知道干什么的数. 没有说明来源/原因的数.这样的数,我们纯看这一行代码,是无法判断其含义的。必须要去上下文中找,才能发现其具体意义。
这样的代码可读性不好。具体看《C语言陷阱》就好啦,祝你好运 参考技术A magic number: 魔法数. 指不知道干什么的数. 没有说明来源/原因的数.
在编程中, 有点数字常量是我们经常会用到的. 比如: 255
char name[255];
请问这个255代表什么? 为什么是255而不是254?
再比如, 我们知道一个函数经常有返回值, 如:
int checkSomeThing(...)
if (...) return 0;
...
if (...) return 1;
...
if (...) return 2;
究竟, 0,1,2代表什么?
所以, 在编程中, 不要使用"magic number", 而是用常量/宏/枚举等代替.
如:
#define MAX_NAME_LEN 255 /*定义最大名字长度*/
...
char name[MAX_NAME_LEN];
这样还有一个好处是...如果这个长度要修改, 只要修改一下定义的地方就好了.
同样, 第二个例子可以修改为:
#define S_OK 0
#define S_INVALID_NAME 1
#define S_ERROR_PASSWD 2
int checkSomeThing(...)
if (...) return S_OK;
...
if (...) return S_INVALID_NAME;
...
if (...) return S_ERROR_PASSWD;
是不是好一些? 不知道这些在北大青鸟(等培训机构)会讲... 参考技术B magic number--魔数
实际上就是在程序代码中突然出现的数字。比如if(a<10)...
这样的数,我们纯看这一行代码,是无法判断其含义的。必须要去上下文中找,才能发现其具体意义。
这样的代码可读性不好。
应当用常量的形式定义,如:#define MAX_SIZE 10 或const int MAX_SIZE=5;
这个我们在用的时候,代码写为if(a<MAX_SIZE)。代码可读性就比较强。 参考技术C 前面两位回答的不准确
魔法数字是指在文件开头定义的一串数字,用于指明该文件的类型,
可参考《C语言陷阱》
FLAG1在编程中是啥意思
flag1是程序员自己起的变量名,一般情况下将其看作为标志位。 参考技术A 这个函数是用来判断在字符串src中含有多少个sub字符串;整个的思路就是:首先判断sub是否存在于src中,若在count就加1; 整个判断行为一直持续到src结束为止。
int subCount(char *src, char *sub)
int count=0;
char *pstr = src;
char *psub = sub;
int flag = 0;
while(*pstr != '\0')
if(*psub != '\0')
if(*pstr != *psub) //判断sub是否包含于src
psub = sub; // 若不,就将psub重新指向sub字符串
flag = 0; //将标志位清零
else
flag = 1;
psub++; //若包含于src中,将标志位为置一,并将psub后移
if (*(psub)=='\0') //判断sub是否已经到尾部
psub = sub; //psub重新指向sub
if (flag == 1) //flag为1,说明在src中包含了字符串sub,count加1;
count++;
flag = 0;
pstr++; //src后移
return count;
以上是关于magic number 在编程中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章