三項演算子(?:)でつまずいた。
true?1,2:3,4
自作ソフトの今の仕様では上の式はエラーになる。
,演算子は優先順位は低いので三項演算子が途中で分断されてエラーでよいと思ってたけど、
C++でコンパイルしたらエラーにならなかった。
true?(1,2):3,4
ということになるらしい。真式内の,は考慮されない?でも偽式の後ろの,はどういうことになるんだろう?
混乱してきた。

(6.2 Expression statement)
expression-statement:
expression(opt) ';'
(5.18 Comma operator)
experssion:
assignment-expression
expression ',' assignment-expression
(5.17 Assignment and compound assignment operators)
assignment-expression:
conditional-expression
logical-or-expression assignment-operator initializer-clause
throw-expression
assignment-operator: one of
'=' '*=' '/=' '%=' '+=' '-=' '>>=' '<<=' '&=' '^=' '|='
(5.16 Conditional operator)
conditional-operator:
logical-or-expression
logical-or-expression '?' expression ':' assignment-expression
expression: "true ? 1 , 2 : 3 , 4"
expression: "true ? 1 , 2 : 3"
assignment-expression: "true ? 1 , 2 : 3"
conditiona-operator: "true ? 1 , 2 : 3"
logical-or-expression: "true"
... literal: "true"
'?'
expression: "1 , 2"
expression: "1"
assignment-expression: "1"
conditional-exprssion: "1"
logical-or-expression: "1"
... literal: "1"
','
assignment-expression: "2"
conditiona-expression: "2"
logical-or-expression: "2"
... literal: "2"
':'
assignment-expression: "3"
conditiona-expression: "3"
logical-or-expression: "3"
... literal: "3"
','
assignment-expression: "4"
conditional-expression: "4"
logical-or-expression: "4"
... literal: "4"
N3337 5.16 Conditional operator さんが書きました: conditional-expression:
[tab=30]logical-or-expression
[tab=30]logical-or-expression ? expression : assignment-expression
expressionは文(N3337 6.2 Expression statement)や条件式(6.4 Selection statements、6.5 Iteration statements)として使える「式」を表します。N3337 5.18 Comma operator さんが書きました: expression:
[tab=30]assignment-expression
[tab=30]expression , assignment-expression
expression : true?1,2:3,4
expression : true?1,2:3
assignment-expression -> conditional-expression : true?1,2:3
logical-or-expression -> literal : true
?
expression : 1,2
expression : 1
assignment-expression -> conditional-expression : 1
logical-or-expression -> literal : 1
,
assignment-expression -> conditional-expression : 2
logical-or-expression -> literal : 2
:
assignment-expression -> conditional-expression : 3
logical-or-expression -> literal : 3
,
assignment-expression -> conditional-expression : 4
logical-or-expression -> literal : 4
という主張は誤りです。へろりくしょん さんが書きました:今回の例では
true ? 2 : 4
false ? 2 : 4
とするのと同じです。