Je vais avoir du mal à comprendre pourquoi je reçois cet avertissement de compilation en utilisant GCC 4.8.4 sur Linux:avertissement GCC « comparaison est toujours vrai » lorsque l'on compare le retour de ntohs avec un entier
avertissement: comparaison est toujours vrai en raison de gamme limitée de type de données [-wtype_avertissement limites]
lorsque l'on compare les valeurs comme celles-ci:
uint16_t port_number = 23620;
if (ntohs(port_number) >= 0 && ntohs(port_number) <= 1023) {
puts("The compiler warns that I will always end up here.");
} else {
puts("Not reached");
}
Je comprends que le pr oblem est dû à la taille maximale supportée par chaque valeur impliquée dans cette comparaison. Mais comment puis-je mieux comprendre et résoudre le problème?
Il est seulement le '> = 0' qui déclenche l'avertissement, puisque' uint16_t' est non signé et donc toujours non négatif. – ecatmur
Lire les pages de manuel des fonctions est toujours une bonne idée avant de demander. – Olaf
@Olaf pouvez-vous me dire où dans la page de manuel de cette fonction il y a une information qui pourrait m'aider? Parce que je n'ai rien trouvé d'utile là-bas qui soit lié à ma question ... Outre le uint16_t. –