Maison > développement back-end > C++ > Pourquoi la comparaison d'un int à string::size_type déclenche-t-elle un avertissement dans le code mis à jour ?

Pourquoi la comparaison d'un int à string::size_type déclenche-t-elle un avertissement dans le code mis à jour ?

Linda Hamilton
Libérer: 2024-11-07 03:39:02
original
621 Les gens l'ont consulté

Why does comparing an int to string::size_type trigger a warning in the updated code?

Comparaison entre les expressions entières signées et non signées : un avertissement

L'enquête tourne autour d'un avertissement rencontré lors de la comparaison d'expressions entières signées et non signées dans le contexte de la détermination du remplissage de trame pour un message d'accueil bordé d'un astérisque.

Question :

Pourquoi un avertissement est-il émis lors de la comparaison d'un int à un string::size_type dans le programme mis à jour, alors que le code d'origine Vous n'avez pas rencontré le problème ?

Réponse :

Il est conseillé de déclarer les variables comme non signées ou string::size_type si elles seront comparées à des tailles pour éviter de tels avertissements. Il est recommandé d'utiliser le type exact à des fins de comparaison (par exemple, string::size_type lors de la comparaison avec la longueur d'une chaîne).

Comparaisons surprenantes :

L'avertissement provient des différents plages d'entiers signés et non signés, conduisant à des résultats inattendus dans les comparaisons. Pour garantir la clarté, convertissez explicitement une valeur en un type compatible avec l'autre avant d'effectuer la comparaison.

Exemple de conversion :

if (i >= 0)
{
    if ((unsigned)i >= u)
        iIsGreaterThanOrEqualToU();
    else
        iIsLessThanU();
}
else
{
    iIsNegative();
}
Copier après la connexion

Clarification supplémentaire :

La question de savoir si cette question sera abordée plus tard dans le livre "Accelerated C" n'est pas explicitement mentionnée dans l'enquête originale.

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