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!