C标准 - 逗号运算符语法

时间:2016-06-26 17:33:37

标签: c syntax comma comma-operator

根据C标准(和K& R),逗号运算符的语法如下:

expression:
    assignment-expression
    expression, assignment-expression

但为什么这个陈述有用呢?

5+5, 1+1; 

5 + 5和1 + 1不是赋值表达式,但C标准要求赋值表达式作为逗号运算符的操作数。

2 个答案:

答案 0 :(得分:5)

assignment-expressionconditional-expressionlogical-OR-expressionlogical-AND-expressioninclusive-OR-expressionexclusive-OR-expressionAND-expressionequality-expressionrelational-expressionshift-expressionadditive-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等表达式。