C言語の関数では仮引数やローカル変数は通常、主記憶上のスタックエリアに割り当てられる。 register指定子は仮引数やローカル変数を "なるべく" レジスタに割り当てるように指定するものである。
レジスタには限りがあるので下記のようなソースでも必ずレジスタが割あたるわけではない。 なので高速化するかどうかは環境依存になってしまうらしいです。はい。
#include <stdio.h> int main() { register int i , d = 10000; for (i = 0 ; i < 10000 ; i++) { printf("i = %d : d = %d\n" , i , d); d--; } return 0; }