30是什么意思

来源:互联网 发布:qq纯真ip数据库 编辑:程序博客网 时间:2024/05/01 18:15
一些如上面代码中的30是一个神奇的数字。一个神奇的数字是一个硬编码的文字(通常是一个数字)在中间的代码,没有任何上下文。30是什么意思?虽然你可能会猜到,在这种情况下,它是每一类学生的最大数量,它不是绝对清晰。在更复杂的程序,它可以是非常困难的推断是硬编码的数字表示,除非有一个评论来解释它。
使用魔法数字通常被认为是不好的做法,因为除了不提供上下文,他们正在使用的,他们带来的问题,如果需要改变的价值。让我们假设学校买新的课桌,让他们提高班级规模从30到35,我们的程序需要反映。考虑下面的程序:


国际maxstudents = numclassrooms * 30;
(30)setmax;
要更新我们的程序使用新的教室大小,我们必须更新常数30至35。但什么叫setmax()?那30和其他30有相同的意思吗?如果是这样的话,应该更新。如果不是,它应该被单独留下,否则我们可能会打破我们的计划在其他地方。如果你做一个全局搜索和替换,你可能无意中更新setmax()争论时,它不应该改变。因此,你必须查看所有的代码的每一个实例的文字30,然后确定它是否需要改变或不。这可能会严重消耗时间(和容易出错)。

幸运的是,更好的选项(符号常量)存在。我们将讨论下一节课的那些。

当声明一个整型变量,不是常量,该变量x的值可以被重新分配,后来。
int x = 5;//声明x整数变量和分配5 x
x = 2;/ / 2现在分配给X,而不是5
x = 4;/ / 4现在分配给X,而不是2
在上面的例子中,x被声明,5被分配给X。我们可以再将另一个数赋给X,然后再改变x的值。
我们可以检查值是否已更改,并将其打印到控制台上:
使用命名空间;
int x = 5;
cout << x << endl;/ / x的值显示在这里是5
x = 2;
cout << x << endl;/ /的值更改为2
x = 4;
cout << x << endl;/现在是4
这个输出:



然而当我们声明一个变量为const,并给它分配一个值,我们不能指定另一个值以后:
const int x = 5;//声明一个常数,X为整数变量,分配5 x
x = 2;/ /编译器错误,因为我们不能将另一个值赋给X
虽然编译出现错误“无法分配到一个const变量,这是误导性的,因为你可以分配(初始化)字面常量到变量只有一次。因此,它的值保持不变,在整个程序。
我也是一个新手学习C++,但我刚刚这个逻辑从亚历克斯所写的过去,随着一些练习在Visual C++ 2010的表达!

没有很多的原因,你需要指定的L前缀。
但让我们说你有两个功能:
void doSomething(int);
void doSomething(长);
如果你叫做(5),你会得到国际版而不是长版。用做(5L)会让你的版本,以长参数。
有可能是其他模糊的例子。
F前缀的使用更为普遍,因为浮点数有奇怪的截断/四舍五入问题。
考虑下面的代码:





浮动F = 0.67;
如果(F = 0.67)
printf(“平等”);
其他的
printf(“不平等”);
这印“不等于”!为什么?当0.67被分配到F时,它被截断为0.670000017。当你将截断值与双值0.67比较时,它不匹配!
这一工程如预期的那样:





浮动F = 0.67;
如果(F = = 0.67f)//注意这里使用F后缀
printf(“平等”);
其他的
printf(“不平等”);

0 0
原创粉丝点击