我知道关于常量的一大问题是,您不必遍历和更新到处使用该常量的代码。这很好,但假设您没有明确将其声明为常量。采用实际上不会更改的变量并将其设为常量有什么好处,这会节省处理和/或代码大小...等吗?
基本上我有一个程序,编译器说某个特定变量没有更改,因此可以声明为常量,我只是想知道向其中添加常量限定符有什么好处,如果没有区别,那么这种变化不会增加任何价值,因此没有必要浪费时间(同样的情况发生在不止一个地方)返回并“修复”所有这些变量。
如果您将变量声明为常量,那么优化器通常可以通过“常量折叠”消除它,从而既加快程序速度又节省空间。举个例子,考虑一下:
var int a = 5;
const int b = 7;
...
c = process(a*b);
编译器最终将创建一条将 a 乘以 7 的指令,并将其传递给“process”,将结果存储在 c 中。然而在这种情况下:
const int a = 5;
const int b = 7;
...
c = process(a*b);
编译器将简单地传递 35 进行处理,甚至不编码乘法。另外,如果编译器知道process没有副作用(即,是一个简单的计算)那么它甚至不会调用process。它只会将 c 设置为 process(35) 的返回值,从而节省了函数调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)