根据C标准(和K& R),逗号运算符的语法如下:
expression:
assignment-expression
expression, assignment-expression
但为什么这个陈述有用呢?
5+5, 1+1;
5 + 5和1 + 1不是赋值表达式,但C标准要求赋值表达式作为逗号运算符的操作数。
答案 0 :(得分:5)
assignment-expression
⊃conditional-expression
⊃logical-OR-expression
⊃logical-AND-expression
⊃inclusive-OR-expression
⊃exclusive-OR-expression
⊃AND-expression
⊃equality-expression
⊃relational-expression
⊃shift-expression
⊃additive-expression
最终为⊃additive-expression + multiplicative-expression
。
所以不,5 + 5确实是∈assignment-expression
。
⊃是“包含”关系。
答案 1 :(得分:2)
首先,定义C语法的方式可能并不明显。
首先,让我们看看如何定义assignment-expression
:
(6.5.16) assignment-expression:
conditional-expression
unary-expression assignment-operator assignment-expression
这意味着它可以是 conditional-expression
或后者的令牌组合。前者定义为:
(6.5.15) conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression
最终,你会遇到:
(6.5.7) shift-expression:
additive-expression
shift-expression << additive-expression
shift-expression >> additive-expression
其中additive-expression
对应于1+1
等表达式。