使用常量(不可变)是否有任何优势而不仅仅是不更改变量?
答案 0 :(得分:1)
根据您的语言和编译器,常量可能会被内联和建成时优化。变量可能会占用堆栈空间,即使它永远不会改变。
答案 1 :(得分:1)
通过使值恒定,编译器可以替换它。例如,如果您有x / 2
,则编译器可以计算该值并使用该值而不必发出代码来检索x
的值,然后将其除以2.
此外,您不必担心意外更改值。例如,在您使用类似C语言的情况下,如果您想要if (x = 2)
if (x == 2)
,则可能会意外地输入x
,如果它是变量,则会更改{{1}}的值。
答案 2 :(得分:1)
将来维护您的代码(包括您)的任何人都不必环顾四周,看看在查找错误或添加功能时更改常量的位置(如果有的话) - 他们会马上知道无法更改。
答案 3 :(得分:0)
在某些程序语言中,声明某些内容是常量将允许编译器进行优化,否则这是不可能的。此外,声明某些内容不变可能是一种有用的方法,可以记录代码中的某些位置,如果值发生变化,可能会被破坏。
不幸的是,有些编程语言有时使用声明为常量的东西做恶事。例如,在某些.net语言中,如果通过可修改引用传递声明为只读的值类型,则编译器将而不是拒绝允许此类操作,而是复制并传递该类型。这种隐式复制会降低效率,并可能导致意外的语义。