インクリメント

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

インクリメント (increment) は、一般には増加という意味だが、コンピュータ用語としては、変数の値を1増やす演算のことである。逆に、1減らす演算はデクリメント (decrement) である。

プロセッサでの扱い[編集]

ループや逐次アドレッシングで使用頻度が極めて高いため、プロセッサレベルで専用のインクリメント命令が用意されていることが多い。

通常、レジスタに数値を加算するには、1ワード加算命令とレジスタを表し、もう1ワードで加算する数値を表すので、計2ワードが必要だが、インクリメント命令を使えば1ワードで済む。ただし、プロセッサによっては、インクリメント命令は加算命令よりもオペランドの種類が限られる(たとえばアキュムレータのみに可能など)。

アセンブラの中には、1を加算する加算命令をインクリメント命令に最適化するものもある。

高級言語での扱い[編集]

C言語C++JavaJavaScriptなどでは、インクリメント演算子++」が用意されている。厳密には、前置インクリメントと後置インクリメントの2種類の演算子があり、演算子記号は同じ「++」だがオペランドの前に置くか(例: ++x)後に置くか(例: x++)で区別される。前置インクリメントは式の評価の最初にオペランドがインクリメントされ、後置インクリメントは最後にインクリメントされる。

y = ++x;    // x = x + 1; y = x; と等価
y = x++;    // y = x; x = x + 1; と等価

C++の演算子オーバーロードでは、通常の記法では前置インクリメントと後置インクリメントを区別できないので、便宜上、後置インクリメントには余分なint型引数を記述して区別する。ただし、古いC++コンパイラはこの後置インクリメントの宣言に対応していないことがある。

T& class T::operator++{ *this += 1; return *this; }                     // 前置インクリメントのオーバーロード
T class T::operator++(int){ T old = *this; *this += 1; return old; }    // 後置インクリメントのオーバーロード

また、デクリメント演算子「--」についても以上のことが全く同様にいえる。

ネーミングでの使用[編集]

C++、Notepad++のように、改良版であることを示すためにインクリメント演算子「++」をつけることがある。