Maison > développement back-end > C++ > le corps du texte

## Pourquoi la concaténation d'un littéral de chaîne et d'un littéral de caractère en C conduit-elle à des résultats inattendus ?

Linda Hamilton
Libérer: 2024-10-25 07:56:29
original
437 Les gens l'ont consulté

## Why Does Concatenating a String Literal and a Character Literal in C   Lead to Unexpected Results?

Énigme : Enigme de la concaténation de chaînes et de caractères en C

Lors de la tentative de concaténation d'un littéral de chaîne avec un littéral de caractère en C, un comportement inattendu peut survenir. Considérez le code suivant :

<code class="cpp">string str = "ab" + 'c';
cout << str << endl;</code>
Copier après la connexion

Fait intéressant, cette ligne donne la sortie "abc". Pour percer ce mystère, il est crucial de comprendre les opérations sous-jacentes.

Sous le capot, le compilateur interprète la chaîne littérale « ab » comme une chaîne de style C et le caractère littéral « c » comme une valeur entière. Étant donné que la concaténation de chaînes n'est pas définie pour ces types, le compilateur ajoute la valeur entière « c » à l'adresse de la chaîne littérale.

Cette manipulation peut conduire à des résultats imprévisibles, car la mémoire allouée à la chaîne est dépassée. . Par conséquent, le programme peut imprimer des caractères à partir de l'adresse résultante jusqu'à rencontrer un caractère nul.

Pour résoudre ce problème, plusieurs approches peuvent être adoptées. Tout d'abord, vous pouvez explicitement convertir le caractère littéral en chaîne à l'aide d'un transtypage :

<code class="cpp">string str = std::string("ab") + 'c';</code>
Copier après la connexion

Vous pouvez également utiliser l'opérateur de concaténation de chaîne, qui effectue la concaténation intuitive :

<code class="cpp">string str = "ab";
str += 'c';</code>
Copier après la connexion

Dans le second cas, la méthode d'opérateur surchargée de la classe chaîne est utilisée pour une concaténation transparente.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!