Maison >développement back-end >C++ >L'initialisation C nécessite-t-elle une conversion Lvalue en Rvalue ?
L'initialisation entraîne-t-elle une conversion de valeur L en valeur R ?
La norme C 11 reste ambiguë quant à savoir si l'initialisation nécessite une conversion de valeur L en valeur R. . Cependant, des preuves suggèrent que les rvalues sont attendues en tant qu'opérandes dans les opérateurs intégrés, sauf indication contraire. Cette approche a été étendue au contexte des initialiseurs.
Conjecture : valeurs Pr attendues pour les valeurs
La spécification supposée est que les valeurs pr sont attendues partout où une valeur est nécessaire, y compris lors de l'initialisation. Cela implique qu'une conversion lvalue en rvalue est requise lors de l'initialisation d'un objet.
Conséquences de la conjecture
Si l'initialisation attend des valeurs pr, les événements suivants se produisent :
Preuves supplémentaires
Les preuves supplémentaires à l'appui de cette conjecture comprennent :
Conclusion
Sur la base des preuves fournies, l'interprétation la plus probable est que l'initialisation attend des prvalues, ce qui entraîne un comportement indéfini lors de l'utilisation de lvalues non initialisées comme initialiseurs. . Cette interprétation s'aligne sur l'approche plus large consistant à attendre des valeurs r dans les opérateurs intégrés, sauf indication contraire.
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!