Syntax like {1,2,3,4}; is called a parenthesized list of initializers; this is an initializer. It can only be used for initialization (for array type).
Citation C11 , chapter Β§6.7.9
The initializer for the scalar must be a single expression,
[the array is not a scalar type, therefore not applicable to us]
A character type array can be initialized with a character string literal or a UTF-8 literal string, optionally enclosed in curly braces.
[We do not use the string literal here, therefore, are also not applicable to us]
Otherwise, an initializer for an object that has an aggregate or type of union must be enclosed in parentheses a list of initializers for elements or named elements.
[It concerns our interests]
and, P17,
Each list of <initializers> associated with a curly brace has a current object associated with it. When there is no designation, the subobjects of the current object are initialized in the order of the type of the current object: array elements in ascending order of substrings , member structure in the declaration order and first name of the union member. [....]
So, here the values ββfrom the closed list of brackets are not tied directly to the array, they are used to initialize individual elements of the array.
OTOH, an array type, is not mutable lvalue, so it cannot be assigned. In other words, an array variable cannot be used as an LHS assignment operator.
To develop, from C11 , chapter Β§6.5.16
the assignment operator must have a mutable value of lvalue as its left operand.