Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-11-07 03:39:02548parcourir

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();
}

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!

Déclaration:
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