c/language/scalar initialization

When an object of, the initializer must be a single expression

The initializer for a scalar (an object of integer type including booleans and enumerated types, floating type including complex and imaginary, and pointer type including pointer to function) must be a single expression, optionally enclosed in braces:

@1,2@ The expression is evaluated, and its value, after to the type of the object, becomes the initial value of the object being initialized. @3@ The object is, i.e. initialized to numeric zero for an object of an arithmetic or enumeration type, or null pointer value for an object of a pointer type.