Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: [c]Dubbio su BOOL

  1. #11
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gennahouse
    BOOT (int a == int c);
    Che cosa sarebbe questa cosa?

    Puoi fare

    BOOL error = NO;

    oppure

    BOOL c = (a == b);

    o ancora

    BOOL c = f(a, b);

    ecc.

    Stampando una variabile BOOL ottieni o 1 o 0 (se la stampi come intero ovviamente).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #12
    Se BOOL di Objective-C funziona come BOOL di Win32 (e come la maggior parte dei BOOL definiti da varie librerie), non dovresti mai andare a vederne esplicitamente il valore, ma semplicemente confrontarlo con 0. Se è 0, allora è falso, se è diverso da zero (sia 1, 10000, 42, 1312421 o qualunque altro numero), allora è vero. Se hai una variabile di tipo BOOL la puoi impiegare facilmente negli if o come condizione in cicli; supponendo che tutte queste varie funzioni restituiscano un BOOL:
    codice:
    BOOL unBool=UnaFunzione();
    if(unBool)
    {
        /* ... */
    }
    
    while(unBool)
    {
        /* ... */
        unBool=UnAltraFunzione();
    }
    
    while(UnAltraFunzioneAncora())
    {
        /* ... */
    }
    
    unBool=(5==3); /* unBool è impostato a 0, ossia FALSE */
    unBool=(7>5); /* unBool è impostato ad 1, ossia TRUE */
    unBool=57; /* unBool è impostato ad un valore diverso da zero, quindi è vero */
    if(unBool)
    {
        /* Infatti il corpo di questo if sarà eseguito */
    
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #13
    Originariamente inviato da MItaly
    Se BOOL di Objective-C funziona come BOOL di Win32 (e come la maggior parte dei BOOL definiti da varie librerie), non dovresti mai andare a vederne esplicitamente il valore, ma semplicemente confrontarlo con 0. Se è 0, allora è falso, se è diverso da zero (sia 1, 10000, 42, 1312421 o qualunque altro numero), allora è vero. Se hai una variabile di tipo BOOL la puoi impiegare facilmente negli if o come condizione in cicli; supponendo che tutte queste varie funzioni restituiscano un BOOL:
    codice:
    BOOL unBool=UnaFunzione();
    if(unBool)
    {
        /* ... */
    }
    
    while(unBool)
    {
        /* ... */
        unBool=UnAltraFunzione();
    }
    
    while(UnAltraFunzioneAncora())
    {
        /* ... */
    }
    
    unBool=(5==3); /* unBool è impostato a 0, ossia FALSE */
    unBool=(7>5); /* unBool è impostato ad 1, ossia TRUE */
    unBool=57; /* unBool è impostato ad un valore diverso da zero, quindi è vero */
    if(unBool)
    {
        /* Infatti il corpo di questo if sarà eseguito */
    
    }
    Una domanda, non si puo usare BOOL semplicemente cosi: BOOL= (==3);
    senza invece usarla con un ciclo?cioeè dico, la prima parte di codice che hai scritto fa diventare BOOL una funzione, che poi viene lavorata con un ciclo.
    Io vorrei sapere questo, e se invece la uso direttamente il risultato sarà sempre 0 oppure 1?

  4. #14
    Originariamente inviato da gennahouse
    Una domanda, non si puo usare BOOL semplicemente cosi: BOOL= (==3);
    Il codice che hai scritto non ha senso, spiegati meglio.
    senza invece usarla con un ciclo?
    Certo che si può.
    cioeè dico, la prima parte di codice che hai scritto fa diventare BOOL una funzione,
    Una funzione non viene "fatta diventare" BOOL; ho semplicemente detto che è una funzione che restituisce un BOOL. Potrebbe essere una cosa del genere:
    codice:
    BOOL UnaFunzione(void);
    che poi viene lavorata con un ciclo.
    Nel primo caso non è la funzione che viene "lavorata". Il suo valore restituito
    Io vorrei sapere questo, e se invece la uso direttamente il risultato sarà sempre 0 oppure 1?
    No. Non ti deve interessare il valore "esatto" di un BOOL. Un BOOL è una variabile che logicamente ha solo due stati, uno (falso) corrispondente al valore zero, l'altro (vero) corrispondente a tutti gli altri valori che una variabile di tipo BOOL può assumere. Fine.
    Tutto quello che puoi fare con un BOOL è verificare se è uguale o diverso da zero, cosa che peraltro è ciò che si fa quando lo si usa da solo come espressione condizionale.

    L'unico caso "frequente" in cui ti serve che lo stato "vero" sia effettivamente 1 e non altri valori è quando viene impiegato in operazioni bit-a-bit, nel qual caso si usa solitamente applicarci una doppia negazione per forzare qualunque valore diverso da zero a diventare un uno.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #15
    grazie mille, ora ho capito tutto

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 © 2026 vBulletin Solutions, Inc. All rights reserved.