地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

register指定子

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;
}