コンマ演算子

From Wikipedia, the free encyclopedia

プログラミング言語C/C++およびJavaScriptなどにおけるコンマ演算子(コンマえんざんし、: comma operator)は、左オペランド(被演算子)を評価しそのを捨て、その後右オペランドを評価する演算子である。コンマの記号文字「,」が使用される。順次演算子(じゅんじえんざんし)もしくは順次評価演算子 (sequential-evaluation operator) と呼称されることもある[1][2][3]日本産業規格(旧称:日本工業規格)のJIS X 3010:2003『プログラム言語C』およびJIS X 3014:2003『プログラム言語C++』では「コンマ演算子」と表記されている。「カンマ演算子」と表記されているドキュメントもある[4][5]

コンマ演算子の値とは右オペランドの値と型となる。Cでは右辺値だが、C++では右オペランドが左辺値であれば左辺値となる。また、左オペランドの評価に対する副作用(C++では一時変数の破棄を除く)が完了した後に右オペランドが評価されることが規格上保証されている。コンマ演算子の優先順位は最も低く規定されている[6][7]。代入演算子=よりも低いため、例えばコンマ演算子の評価結果(右オペランド)を何らかの変数に代入したい場合は、括弧で囲んでx = (a, b);のように書く必要がある。

複数の変数の宣言、配列構造体の初期化子リスト、関数の引数リストなど、コンマ,は特定の文脈においてセパレータ(区切り文字)としても利用されるが、演算子としてのコンマとは完全に別物である[8]。たとえC系統であっても、JavaC#を代表とする後発言語の多くはコンマ演算子をサポートせず、コンマ,にはセパレータとしての用法しかない。

脚注

関連項目

Related Articles

Wikiwand AI