Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 什么时候应该使用和不使用寄存器变量?有缺点吗?_C_Variables_Types - Fatal编程技术网

C 什么时候应该使用和不使用寄存器变量?有缺点吗?

C 什么时候应该使用和不使用寄存器变量?有缺点吗?,c,variables,types,C,Variables,Types,可能重复: 如果我把几乎所有的东西都声明为寄存器变量呢?这会加快我的程序是吗?还是有什么缺点。因为我很难选择要声明为寄存器变量的变量。您不能获取寄存器变量的地址 除此之外,编译器擅长寄存器分配,您几乎不想自己将变量声明为register(编译器可以随意忽略此提示——如果主要编译器假装register不做任何事情,我也不会感到惊讶,除非被告知不要优化代码).编译器通常比您优化得更好,不要在这方面花费时间。另请参见:但我在某个地方读到,它会使我的程序更快?现在过时了吗?@vincentbelkin

可能重复:


如果我把几乎所有的东西都声明为寄存器变量呢?这会加快我的程序是吗?还是有什么缺点。因为我很难选择要声明为寄存器变量的变量。

您不能获取寄存器变量的地址


除此之外,编译器擅长寄存器分配,您几乎不想自己将变量声明为register(编译器可以随意忽略此提示——如果主要编译器假装
register
不做任何事情,我也不会感到惊讶,除非被告知不要优化代码).

编译器通常比您优化得更好,不要在这方面花费时间。另请参见:但我在某个地方读到,它会使我的程序更快?现在过时了吗?@vincentbelkin:没有。寄存器分配是编译器现在做得很好的事情(读:比你做得好)。@vincentbelkin:是的,这些信息已经过时了。在某些情况下,
register
关键字甚至可能会使程序变慢(如果编译器接受该关键字并且寄存器分配结果是次优的)@BartvanIngenSchenau谢谢!因为关于C的旧书一直在讲述它的优化。很高兴我选择了收拾残局,否则我可能会继续这样做。@vincent-你不应该读那么旧的书!在个人电脑上,仔细使用
寄存器
可以在1985年以前改进代码。之后,编译器将比人类做得更好。