L'analyse la plus contrariante fait référence à une ambiguïté grammaticale en C qui peut conduire à des résultats inattendus lors de la déclaration de fonctions . Un détail déroutant qui surgit est la possibilité d'analyser certaines lignes comme des déclarations de fonction, même lorsqu'elles ne semblent pas conformes à la syntaxe attendue.
Considérez la ligne suivante :
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Cette ligne peut être interprété comme une déclaration de fonction en raison de l'analyse la plus vexante. Le premier itérateur temporaire, istream_iterator
Cependant, il n’est pas immédiatement clair quel type représente le premier itérateur temporaire. La clé pour comprendre cela est de réaliser que istream_iterator
Cela soulève la question de savoir s'il est possible de mettre arbitrairement entre parenthèses les noms d'arguments dans les appels de fonction. La réponse est oui, vous pouvez mettre entre parenthèses les noms d’arguments si vous souhaitez les mettre en évidence ou clarifier leur objectif. Cependant, cela est généralement déconseillé car cela peut conduire à un code confus ou inattendu. L'objectif principal de cette syntaxe est de prendre en charge une syntaxe héritée du C et n'est pas considérée comme une bonne pratique dans le code C moderne.
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!