我声明了一个int
变量如下:
register int count;
当变量声明为register
时,其分配将在我的计算机运行的处理器中完成。
我的问题是,有多少个处理器寄存器,这些寄存器的大小是多少?
答案 0 :(得分:9)
当一个变量被声明为寄存器时,它的分配将在我的计算机运行的处理器中完成。
这是几十年前的古老知识。如今,C中的关键字register
是一个很大程度上被忽略的提示,而在C ++中,它几乎没有任何东西;从C ++ 17开始,你甚至不再允许它写它(它已经#34;未使用和保留")。
自20世纪90年代以来的编译器足够聪明,可以决定放置(或不放置!)数据的位置,并且它们或多或少地忽略了你更清楚的坚持(除非你有非常具体的硬件要求,这需要更具体的代码反正)。
不要试图将物理因素泄漏到您的代码库中,只需编写描述程序的语义的漂亮代码,记住C ++和(在较小程度上)C都是抽象,而不是机器指令的一对一映射。
至于存在多少个处理器寄存器以及大小,这完全取决于您拥有的处理器。你可以从它的数据表中找到,如果你真的好奇。