Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] - Operatore logico OR: condizione sempre vera

    Un saluto al forum,

    non riesco a capire come mai questo codice non funzioni come dovrebbe:

    codice:
    #include <stdio.h>
    
    int main ()
    
    {
    
       int valore;
    
       printf ("Inserire l'intero 1 o l'intero 2:");
       scanf ("%d", &valore);
    
       if ( valore != 1 || valore != 2 )
          printf ("Il valore inserito non è corretto. I valori ammessi sono solo 1 e 2\n");
    
       else
          printf ("Il valore inserito è corretto\n");
    
       return 0;
    
    }
    Il problema è la condizione if ( valore != 1 || valore != 2 ): il senso dell'istruzione dovrebbe essere "Se valore è diverso da 1 O da 2, stampa "Il valore inserito non è corretto..."". Invece anche se immetto 1 0 2 mi restituisce sempre "il valore inserito non è corretto".

    Come posso risolvere?

    Grazie

  2. #2
    Modifica:
    codice:
    if ( valore != 1 || valore != 2 )
    con
    codice:
    if ( valore != 1 && valore != 2 )
    Saluti

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C] - Operatore logico OR: condizione sempre vera

    Originariamente inviato da pastoreerrante
    ... "Se valore è diverso da 1 O da 2, ...
    No ... il senso dovrebbe essere

    "Se valore è diverso da 1 E da 2, ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    per chiarezza del codice e facilitare l'umana comprensione è meglio scriverla nella forma

    codice:
       if ( valore == 1 || valore == 2 )
          printf ("Il valore inserito è corretto\n");
       else
          printf ("Il valore inserito non è corretto. I valori ammessi sono solo 1 e 2\n");
    in questo caso potrebbe anche essere di più immediata comprensione uno switch

    ciao

    sergio

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da mondobimbi
    per chiarezza del codice e facilitare l'umana comprensione
    D'accordo Sergio, ma sarebbe bastata un po' di "umana conoscenza dell'algebra booleana" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6

    [C] - Operatore logico OR: condizione sempre vera [RISOLTO]

    Grazie a tutti, ho risolto.

  7. #7
    Originariamente inviato da oregon
    D'accordo Sergio, ma sarebbe bastata un po' di "umana conoscenza dell'algebra booleana" ...
    mi riferivo al fatto che un and di due valori negati non si usa nel linguaggio comune, infatti si dice

    "mi compro una mela o una pera"

    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.