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 在编程中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

magicnumber是啥?C语言

Action在编程中的意思是啥?

linux中的magic number是啥意思

switch是啥意思

int **m,**s;是啥意思?

(number & -number) 在位编程中是啥意思? [复制]