J'écris un code qui compare 2 octets qui représentent des entiers. Je veux voir si l'octet R est avec + -10 de G. Le problème que j'ai avec le code est avec la comparaison dans le if-statment près de la fin. Les octets ne sortent jamais hors de portée, même quand ils le devraient. Je suis sûr que le problème vient de la façon dont j'ajoute/soustrais le error_range, mais je ne connais pas d'autre moyen de le faire.C: Comparer deux octets pour voir si l'un est dans une certaine plage de l'autre
J'ai d'abord considéré la conversion des octets en entiers, mais je ne trouve aucune aide avec cela en ligne. Si cela fonctionne mieux que ce que je fais ici, s'il vous plaît dites-moi comment le faire.
Toute aide est appréciée!
const char ERROR_RANGE = 0x1010; //warning: overflow in implicit constant conversion
char R, G; /2 separate bytes
char buffer; //enough space for 1 byte
image = fopen(fileName,"r"); //open file
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&R,&buffer,1); //store it as R
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&G,&buffer,1); //store it as G
fclose(image);
if((R >= (G + ERROR_RANGE)) && (R <= (G - ERROR_RANGE)))
{
printf("Outside of range!\n");
}
Merci.
Utilisez unsigned char. –
0x1010 == 4112 ... –
Avez-vous pensé à imprimer ERROR_RANGE pour voir à quoi cela est initialisé? Aussi, qu'attendez-vous si la valeur lue dans le fichier est de 126? –