我知道在 C 中,如果使用 register
显式指定了一个变量关键字,则不能使用 &
运算符,这对我来说很有意义,即没有始终保存在寄存器中的变量的“地址”这样的东西。
我的问题是,如果编译器自行决定将变量存储在寄存器中而不是将其溢出,那么 &
会发生什么?代码执行期间的运算符?
我可以想到编译器可能会尝试处理的两种方法:
&
行为,但这似乎很麻烦,我不知道如何严格有效地做到这一点。 &
总是溢出变量运算符与此变量一起使用。 在这种情况下,C 是采用其中一种方法还是执行其他操作?
最佳答案
变量是否在硬件寄存器中实现的事实必须对用户完全透明。由编译器来实现这一点,以便始终可以通过指针访问当前值。
当用户决定使用关键字 register
声明变量时,情况会发生变化。 .然后使用&
运营商被简单地禁止。
关于c - 编译器决定放入寄存器的变量的运算符地址会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62756488/