これは「変数(容器)」のアドレスを返却しますのでオペランドは「左辺値」です。演算結果は「右辺値」です。この「右辺値」は特殊です。間接演算子*で「左辺値」へ変換できてしまいます。クラス、構造体、共用体を纏めてレコード型と呼びます。レコード型については後日解説します。以上の分類に属さない演算子です。必要に応じて後日解説します。各演算子には、優先順位があります。同じ優先順位の者同士については、左から先に処理するのか、右から先に処理するのか決まっています。同じ優先順位の演算子が隣り合っている時、左右どちらから処理するかの決め事は「結合規則」(Associativity)と呼ばれています。これは、例えば、*と%は同じ優先順位で結合規則が左から右です。2は2ではなく0になります。2つのオペランドのどちらを先に処理るのか決められていません。(a+b)*(c+d)の時、a+bとc+dのどちらから先に計算するのか決められていないのです。処理系が自由に決めます。結合規則とは無関係ですので注意して下さい。++nのような式を書いた場合、nと++nのどちらが先に処理されるか決まらないため、左側のnがインクリメント前の値なのかインクリメント後の値なのか決まりがありません。このような記述は「未定義動作」を引き起こします。「未定義動作」に該当するケースは何が起こっても、それは全てプログラマの責任と決められています。処理系の責任ではありません。reference(英語)を参照下さい。4.まとめ今回は、ちょっと早まったかも知れないとドキドキしつつ、左辺値と右辺値の解説をしました。左辺値と右辺値自体はメモリと変数の関係を理解できれば難しくはない概念ですが、「左辺値を返す計算式」は理解しづらい概念と思います。C言語であれば、左辺値を返却したいような場合にはポインタを使います。ポインタにはnullptrも設定できますし、受け取った後、異なる場所を指すこともできます。自由度が高い分、やっちゃいけないことをやらないようプログラマの注意力をより多く消費してしまいます。C++の場合、左辺値がnullptrのようにどこも指していない状態を作ることは容易にはできない仕組みも導入されています。使い方はちょっと難しいですが、うまく使いこなすことができれば、自分が作ってしまったバグをコンパイラが指摘してくれます。細かいバグはコンパイラにまかせて自分はもっと高度な設計に注力できるちょっと幸せな世界が待っているのです。次回はループや分岐などの基本的な制御構造について解説します。12:472-1-2.オペランドと演算結果が整数型(浮動小数点を含まない)の演算子の表の中の右シフト、左シフトの説明と演算子の関係が逆になっています。13:16ikedaさんコメントありがとうございます。ご指摘ありがとうございます。17:49すごく分かりやすい解説ありがとうございます。++aには代入できるのに、a++に代入できない謎が解けました。++aとa++の演算結果がそれぞれ左辺値、右辺値だったからなんですね。18:38morinoさんコメントありがとうございます。分かりやすいと言って頂けて嬉しいです!!C++は学習難易度は高いですが、マスターすればするほどプログラミングの力がどんどん増えます。今後とも頑張って下さい。コメントをキャンセルメールアドレスが公開されることはありません。テクノロジーの登録商標です。technology.。