OVH Cloud OVH Cloud

Comparer un unsigned char à son inverse bit à bit

3 réponses
Avatar
Vincent Jacques
Bonsoir,

Le code suivant compile avec le warning "comparison of promoted ~unsigned
with unsigned" et la condition a != ~b est vraie car b semble converti en
unsigned int avant l'application du ~.

> #include <iostream>
>
> int main()
> {
> unsigned char a = 0xFF, b = 0x00;
> if(a != ~b)
> std::cout << "etrange pour moi";
> return 0;
> }

Comment doit-on écrire ça en C++ ? Suis obligé de faire un truc du genre

> #include <iostream>
>
> int main()
> {
> unsigned char a = 0xFF, b = 0x00;
> if(a != ((~b)&0xFF))
> std::cout << "etrange pour moi";
> return 0;
> }

Pour les curieux : dans un programme qui communique avec un montage
électronique, j'ai une fonction de "ping" qui vérifie que le montage est
bien connecté au PC. Cette fonction envoit quelques octets au montage qui
les renvoit inversés. Je cherche à vérifier que ce que je reçoit
correspond à ce que j'ai envoyé.

Bonne fin de soirée,
--
Vincent Jacques

"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
Devise Shadok

3 réponses

Avatar
Fabien LE LEZ
On Mon, 20 Mar 2006 23:06:37 +0100, Vincent Jacques
:

unsigned char a = 0xFF, b = 0x00;
if(a != ~b)



if (a != static_cast<unsigned char>(~b))


Avatar
Vincent Jacques
On Mon, 20 Mar 2006 23:06:37 +0100, Vincent Jacques
:


unsigned char a = 0xFF, b = 0x00;
if(a != ~b)




if (a != static_cast<unsigned char>(~b))


Merci.

Bonne journée,
--
Vincent Jacques

"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
Devise Shadok



Avatar
Vincent Jacques
if (a != static_cast<unsigned char>(~b))


Merci pour votre réponse.

J'ai toujours le même warning avec le code suivant ("comparison of
promoted ~unsigned with unsigned", je compile avec g++ -Wall -pedentic)

Bien sûr, le comportement du programme est maintenant celui que j'attends.

#include <iostream>

int main()
{
unsigned char a = 0xFF, b = 0x00;
if(a != static_cast<unsigned char>(~b))
std::cout << "etrange pour moi";
return 0;
}


--
Vincent Jacques

"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
Devise Shadok