Listes d'initialisation dans les arguments des opérateurs
L'utilisation de listes d'initialisation sur le côté droit (RHS) des opérateurs, une fonctionnalité absente dans C 11, soulève des questions sur le raisonnement derrière cette restriction.
Le standard C interdit l'utilisation directe de listes d'initialiseurs sur le RHS des opérateurs binaires comme ' ', '*' ou '<<'. Cela vient du fait que les listes d'initialisation ne sont pas considérées comme des expressions selon le §5 de la Norme, qui interdit leur utilisation dans les fonctions et les arguments d'opérateurs binaires.
Pour faciliter l'utilisation des listes d'initialisation, la norme introduit des exceptions. Cependant, il n'y a pas d'exception de ce type pour les opérateurs binaires, laissant les listes d'initialiseurs restreintes des deux côtés.
La décision derrière cette restriction est expliquée dans N2215 par Stroustrup et Dos Reis (2007). Autoriser les listes d'initialisation comme opérande de gauche entraînerait des conflits d'analyse en raison de l'utilisation d'accolades pour les listes d'initialisation et les blocs.
De plus, autoriser les listes d'initialisation uniquement sur le RHS, par opposition aux deux côtés, a été jugé créer une incohérence excessive. Par conséquent, les listes d'initialiseurs sont autorisées dans certains contextes, tels que les arguments de fonction, les indices et les affectations, mais pas dans le cas général des arguments d'opérateurs binaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!