Syntax C - Command Statement Syntax

according to the C (and K & R) standard, the Comma-Operator syntax is as follows:

expression:
    assignment-expression
    expression, assignment-expression

But why does this statement work?

5+5, 1+1; 

5 + 5 and 1 + 1 are not assignment expressions, but the C standard requires assignment expressions as operands for Comma-Operator.

+4
source share
2 answers

assignment-expressionconditional-expressionlogical-OR-expressionlogical-AND-expressioninclusive-OR-expressionexclusive-OR-expressionAND-expressionequality-expressionrelational-expressionshift-expressionadditive-expression, which finally are ⊃ additive-expression + multiplicative-expression.

So no, 5 + 5 really is ∈ assignment-expression.


⊃ is the "contains" relation.

+5

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.

+2

All Articles