Maison >développement back-end >C++ >Pourquoi les littéraux de chaîne sont-ils des valeurs L en C et C alors que les autres littéraux sont des valeurs R ?
En C et C, les littéraux de chaîne sont une exception à la règle selon laquelle tous les littéraux sont r -valeurs. La norme C 03 stipule que, alors que les autres littéraux sont des valeurs r, les littéraux de chaîne sont des valeurs l. De même, la norme C99 définit les littéraux de chaîne comme des valeurs L.
Cette distinction découle de la nature des littéraux de chaîne en tant qu'objets. Contrairement aux autres littéraux, qui représentent des valeurs fixes, les littéraux de chaîne sont des objets de type tableau. En C, les tableaux ne peuvent exister que sous forme de valeurs l dans les expressions.
Pour rendre les chaînes littérales plus utiles, il ne serait pas pratique de les définir comme ayant un type pointeur au lieu d'un type tableau. Cela empêcherait l'application de l'opérateur sizeof sur les littéraux de chaîne.
La norme C99 a introduit les littéraux composés, qui sont également des valeurs l. Leur introduction suggère un changement vers la norme selon laquelle les littéraux sont des valeurs l plutôt qu'une exception spéciale. Les littéraux composés permettent la création d'objets temporaires initialisés avec une valeur spécifique. Comme les chaînes littérales, ils existent sous forme de valeurs L.
La raison de cette distinction peut également être ancrée dans l'architecture matérielle. Dans les premiers ordinateurs, les chaînes étaient stockées sous forme de tableaux de caractères plutôt que de pointeurs vers des tableaux de caractères. Ce contexte historique a peut-être influencé le choix de définir les littéraux de chaîne comme des valeurs l.
Les littéraux de chaîne sont définis comme des valeurs l en C et C car ce sont des objets de type tableau. Alors que les autres littéraux sont des valeurs fixes, les littéraux de chaîne sont des objets qui peuvent être modifiés ou référencés. Cette distinction permet une utilisation plus flexible des chaînes littérales dans la programmation.
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!