Si j'ai:variable C et la comparaison de valeur constante ne correspond pas à
signed char * p;
et je fais une comparaison:
if (*p == 0xFF)
break;
il ne rattrapera jamais 0xFF, mais si je le remplace par -1 il volonté:
if (*p == (signed char)0xFF)
break;
Comment cela est-il possible? Est-ce quelque chose avec le drapeau de signe? Je pense que c'est 0xFF == -1 == 255
.
0xFF est signé, non signé. 0xFFU est la version non signée. Seul * p doit être promu. – Niall
Niall: Vous avez raison; Je vais mettre à jour la réponse. –