読み方 : だいにゅうしき

代入式【assignment expression】

概要

代入式とはプログラミング言語において変数へ値を代入する処理を、単なる命令文ではなく値を返す式として扱う仕組み。代入された値が式全体の評価結果として返されるため、他の演算の中に組み込んで記述できる。
代入式のイメージ画像

多くの手続き型言語では「=」が代入演算子として使われ、「a = 1」は「変数aに1を代入する」という意味を持つ。代入式の仕組みを持たない言語ではこれは代入文であり、文を置ける位置でしか使用できない。

一方、代入式を採用する言語では「a = 1」は「aに1を代入し、その結果として1を返す式」として扱われる。単独で書けば通常の代入文と同じ動作になるが、式であるため、他の式の一部として埋め込むこともできる。

例えば、「b = (a = x) + 1」と記述すると、まずxの値がaに代入され、その評価結果に1を加えた値がbに代入される。また、「a = b = c = 1」のような連鎖代入も可能で、一般に「a = (b = (c = 1))」のように右から順に評価され、cへ1が代入された結果がbへ、さらにaへと順に伝わる。どのような順序で評価されるかは言語仕様によって定められており、必ずしも全ての言語で共通ではない。

代入式は条件式ループの制御式の中でも利用される。入力関数の戻り値を変数へ代入すると同時にその値を条件判定に使うといった記述が可能で、処理を簡潔にまとめられる場合がある。反面、比較演算子「==」と代入演算子「=」を取り違える原因になりやすく、意図しない代入によるバグを招くこともある。このため、比較と代入を明確に区別する構文を採る言語や、条件式中の代入に制限や警告を設ける処理系も存在する。

利便性と安全性のどちらを重視するかは言語の設計思想によって分かれており、簡潔さを優先して代入式を積極的に取り入れる言語もあれば、可読性バグの防止を重視して代入を文に限定する言語もある。C言語やC++言語、JavaJavaScriptなど多くの言語で代入式が採用されているが、Go言語では代入文のみが用意されている。Pythonは長年代入を文としてのみ扱ってきたが、バージョン3.8以降は「:=」という専用の演算子を用いることで、条件式ループの中で代入と値の利用を同時に行えるようになった。

(2026.7.6更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。