Masque avec la valeur 1000
Bonjour,
Voici le bout de code qui me pose pb :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
// meme pb avec un long, unsigned int, unsigned long
int transfert = 0;
while (transfert < 11111)
{
ifstream etat1("c:\\user\\svelt\\titres.txt", ios::nocreate | ios::binary);
if(etat1)
{
IlvPrint("Transfert av = %d", transfert);
transfert |= 10000;
IlvPrint("Transfert ap = %d", transfert);
}
etat1.close();
ifstream etat2("c:\\user\\svelt\\gammes.txt", ios::nocreate | ios::binary);
if(etat2)
{
IlvPrint("Transfert av = %d", transfert);
transfert |= (long)1000;
IlvPrint("Transfert ap = %d", transfert);
}
etat2.close();
ifstream etat3("c:\\user\\svelt\\postes.txt", ios::nocreate | ios::binary);
if(etat3)
{
IlvPrint("Transfert av = %d", transfert);
transfert |= (long)100;
IlvPrint("Transfert ap = %d", transfert);
}
etat3.close();
ifstream etat4("c:\\user\\svelt\\relatgt.txt", ios::nocreate | ios::binary);
if(etat4)
{
IlvPrint("Transfert av = %d", transfert);
transfert |= (long)10;
IlvPrint("Transfert ap = %d", transfert);
}
etat4.close();
ifstream etat5("c:\\user\\svelt\\relatgf.txt", ios::nocreate | ios::binary);
if(etat5)
{
IlvPrint("Transfert av = %d", transfert);
transfert |= (long)1;
IlvPrint("Transfert ap = %d", transfert);
}
etat5.close();
} |
Le probleme est le suivant : tous les masques sont appliques comme il faut sauf pour la valeur 1000 (2eme test).
A l'affichage, au lieu de rajouter 1000 a transfert, c'est 128 qui est rajoute, quelque soit la valeur precedente de transfert.
Je ne m'explique vraiment pas ce comportement. Meme en castant les valeurs des masques, j'obtiens le meme resultat...
Soit je ne suis pas reveille ce matin, soit je vais devoir appele Mulder et Scully :?
Quelqu'un a une idee ?