Es gibt kein Array, die C-Syntax erlaubt dies einfach. Beide sind äquivalent:
int k = 5;
int k = {5};
Wie für die Initialisierung in den Syntaxregeln gesehen ,
Initialisierer kann eine Zuweisung-Ausdruck sein, der entspricht:
int k = 5;
der Initialisierer kann auch eine {Initialisierungsliste} sein, die ein Initialisierer sein kann, der ein Zuweisungsausdruck sein kann:
(Zitat von ISO/IEC 9899: 201x 6.7.9 Initialisierung Syntax 1.)
Initialisierer:
Zuweisungsausdruck
{Initialisierer-Liste}
{Initialisierungsliste,}
Initialisierer-Liste:
Bezeichnung opt initializer
Initialisierer-Liste Bezeichnung opt initializer
Warum denken Sie, '{5}' ist ein Array aus einem Element? Warum kann es nicht eine Strukturkopie von nur einem Element gleich fünf sein? Der Grund dafür ist historisch. Es wurde vom Compiler von K & R erlaubt. –
Das ist übrigens keine Art von Aufgabe. Es ist ** eine Deklaration mit einem Initialisierer **. –