Le code suivant:évaluation de l'état étrange
#include <stdint.h>
int main() {
uint8_t Byte;
if (Byte < 0) { }
}
émet l'avertissement de compilation suivante:
main.cpp: In function `int main()':
main.cpp:6: warning: comparison is always false due to limited range of data type
C'est très bien. Mais quand je change condition:
(1) if (true || (Byte < 0)) { }
Je reçois encore l'avertissement, alors que je pense recevoir d'avertissement comme « la comparaison est toujours vrai ... » :)
Si je change déclaration d'octets à:
L'avertissementdisparaît.
Comment puis-je expliquer le comportement?
Mon système est RHEL 5.3 64 bits livré avec gcc 4.1.2.
EDIT:
(1) n'est pas un problème, je viens juste mal compris avertissement du compilateur. Il ne dit pas que le tout est faux mais plutôt "Octet < 0".
Donc le problème est seulement (2) - pourquoi Byte type déclenche l'avertissement du compilateur. La constante "0" est de type int, donc ses 4 octets. Donc, il doit être lié à la comparaison si uint8_t avec int