C中的注册和自动变量

时间:2015-06-29 06:48:27

标签: c cpu-registers

以下哪项工作更快?

  • 计划1

使用register

int main(){
   register int i;

   for(i=0;i<=100;i++)
       printf("%d\n",i);

   return 0; 
} 
  • 计划2:

使用auto

int main(){    
    auto int i;

    for(i=0;i<=100;i++)
        printf("%d\n",i);

    return 0;
} 

2 个答案:

答案 0 :(得分:2)

最有可能没有区别。 register关键字用于指定将变量存储在CPU寄存器中的编译器,但大多数现代编译器会自动执行此操作。

对于auto关键字,它是多余的,因为它默认存在。 所以

float b;

相同
auto float b;

然而,在这么小的例子中,实际上不可能看到哪一个更快,需要更密集的测试。

答案 1 :(得分:1)

更聪明的人会提供更多细节,但基本上你的寄存器int不会做任何事情。编译器会做它认为更快的事情,在两种情况下我都会以相同的方式下注。

您必须编写一些极低级别的代码才能使寄存器变量有意义,因为它们直接使用CPU寄存器。