2010-09-18 14 views
1

J'écris une simple boucle pour m'assurer que mon entrée est un binaire valide. Ex: Je veux lancer une erreur quand un nombre supérieur à un est une entrée utilisateur. Je sais que je dois vérifier les numéros ASCII. Qu'est-ce qui se passe ici? Je ne devrais pas avoir une erreur quand je saisis le binaire. Des pensées?Numéros binaires. Erreur lors de la vérification pour être sûr que l'entrée binaire est binaire

for (int i=0;i<size;i++) 
{ 
    printf("%i is string sub %i\n",int(binary[i]),i); 
    if (int(binary[i]) != 48 || int(binary[i]) != 49) 
    { 
     printf("ERROR NOT A BINARY NUMBER\n"); 
     exit(0); 
    } 
} 
entrée

:

0101 

Sortie:

48 is string sub 0 
ERROR NOT A BINARY NUMBER 
+0

sans la définition de 'binary []' cette question ne peut pas être répondue. – msw

Répondre

6

Vous devez utiliser if (int(binary[i]) != 48 && int(binary[i]) != 49) - Note & & plutôt que ||. En l'état, le if(...) était effectivement if(true) car binary[i] ne pouvait pas être à la fois 48 et 49 simultanément.

+0

OMG, Merci .... – ChitownDev

+0

np - heureux d'être utile. –

1

Vous utilisez le mauvais opérateur booléen. Si vous lisez à haute voix votre instruction if, voici à quoi cela ressemble:

Exécutez ce qui est à l'intérieur de l'instruction if si le binaire [i] n'est pas "0" ou s'il ne l'est pas.

Comment cela peut-il être deux choses en même temps?

Utilisez && au lieu de ||.