gpt4 book ai didi

c - 编译器决定放入寄存器的变量的运算符地址会发生什么?

转载 作者:行者123 更新时间:2023-12-03 15:48:20 25 4
gpt4 key购买 nike

我知道在 C 中,如果使用 register 显式指定了一个变量关键字,则不能使用 &运算符,这对我来说很有意义,即没有始终保存在寄存器中的变量的“地址”这样的东西。
我的问题是,如果编译器自行决定将变量存储在寄存器中而不是将其溢出,那么 & 会发生什么?代码执行期间的运算符?
我可以想到编译器可能会尝试处理的两种方法:

  • 尝试模仿 &行为,但这似乎很麻烦,我不知道如何严格有效地做到这一点。
  • 如果 & 总是溢出变量运算符与此变量一起使用。

  • 在这种情况下,C 是采用其中一种方法还是执行其他操作?

    最佳答案

    变量是否在硬件寄存器中实现的事实必须对用户完全透明。由编译器来实现这一点,以便始终可以通过指针访问当前值。
    当用户决定使用关键字 register 声明变量时,情况会发生变化。 .然后使用&运营商被简单地禁止。

    关于c - 编译器决定放入寄存器的变量的运算符地址会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62756488/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com