首页  >  文章  >  后端开发  >  在 C 中使用 register 关键字和声明没有它的变量有什么区别?

在 C 中使用 register 关键字和声明没有它的变量有什么区别?

Barbara Streisand
Barbara Streisand原创
2024-10-24 02:13:02147浏览

What's the Distinction Between Using the register Keyword and Declaring Variables Without It in C  ?

C 中的 Register 关键字

在 C 中使用变量时,有时您可能想知道使用 register 关键字之间的区别并简单地声明一个没有它的变量。让我们深入研究一下两者之间的区别:

register 关键字的目的是什么?

register 关键字向编译器建议它应该存储指定变量位于处理器的寄存器之一而不是内存中。通过这样做,编译器可以通过减少 CPU 访问较慢内存来检索变量值的次数来潜在地提高性能。

但是,需要注意的是,编译器没有义务遵循这一点建议。它可能会选择完全忽略它并将变量存储在内存中,尤其是如果它认为还有更关键的因素影响性能的话。

Herb Sutter 所说的

根据著名 C 专家和《Effective C》一书的作者 Herb Sutter 认为,使用 register 关键字声明的变量与使用 auto 说明符声明的变量具有相同的语义。这意味着编译器负责根据各种因素(包括变量的范围、生命周期和使用模式)选择变量的最佳存储位置。

你应该使用 register 关键字吗?

虽然使用 register 关键字有时可以带来性能优势,但它不是通用的解决方案。通常建议避免使用它,除非您有特定的性能问题并且已经测量了使用它对代码性能的影响。盲目使用 register 关键字可能会导致不必要的代码复杂性和潜在的性能问题。

总之, register 关键字是向编译器暗示您希望某个特定变量成为存储在寄存器中,但编译器可以自由地按照自己的意愿进行操作,如果它认为这是更好的选择,则可以将其存储在内存中。

以上是在 C 中使用 register 关键字和声明没有它的变量有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn