Maison > Article > développement back-end > Pourquoi est-ce que je reçois un avertissement « comparaison entre les expressions entières signées et non signées » en C ?
Avertissement : Comparaison entre les expressions entières signées et non signées
Introduction
Pendant le travail sur l'exercice 2-3 de "Accelerated C", un utilisateur a rencontré un avertissement du compilateur : "comparaison entre les signatures et des expressions entières non signées. Ce problème survient lors de la comparaison d'entiers signés (int) à string::size_type, un type de données couramment utilisé pour les longueurs de chaînes.
Cause de l'avertissement
L'avertissement se produit car les types entiers signés et non signés ont des plages différentes. Lorsque l'on compare ces types, le résultat peut être inattendu. Les compilateurs émettent cet avertissement pour alerter les programmeurs du risque de confusion des résultats.
Pratique recommandée
Pour éviter ce problème, il est conseillé de spécifier explicitement si les entiers sont signés ou non signé. Lorsque vous comparez des entiers à des longueurs de chaîne ou à d'autres valeurs non signées, déclarez les entiers comme entier non signé ou size_t pour correspondre au type de données comparé. Cela garantit que la comparaison donne les résultats escomptés.
Exemple de code
Dans le code fourni, padtopbottom doit être déclaré comme unsigned int pour correspondre à la variable string::size_type c:
unsigned int padtopbottom; cin >> padtopbottom; unsigned int padsides; cin >> padsides; if (r == padtopbottom + 1 && c == padsides + 1) { // ... }
Supplémentaire Notes
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!