以下哪项工作更快?
使用register
int main(){
register int i;
for(i=0;i<=100;i++)
printf("%d\n",i);
return 0;
}
使用auto
int main(){
auto int i;
for(i=0;i<=100;i++)
printf("%d\n",i);
return 0;
}
答案 0 :(得分:2)
最有可能没有区别。 register
关键字用于指定将变量存储在CPU寄存器中的编译器,但大多数现代编译器会自动执行此操作。
对于auto
关键字,它是多余的,因为它默认存在。
所以
float b;
与
相同auto float b;
然而,在这么小的例子中,实际上不可能看到哪一个更快,需要更密集的测试。
答案 1 :(得分:1)
更聪明的人会提供更多细节,但基本上你的寄存器int不会做任何事情。编译器会做它认为更快的事情,在两种情况下我都会以相同的方式下注。
您必须编写一些极低级别的代码才能使寄存器变量有意义,因为它们直接使用CPU寄存器。