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

    [C] dubbio su operatore logico ! e priorità operatori

    ciao

    sto simulando un esercizio di informatica ;

    il problema è che arrivato a un certo punto del codice non so esattamente come il compilatore risponda ;


    il codice è questo

    codice:
    =========================
    
    ipotesi 
    chars  [6] = { 'a' ,'5' , 'm' , 'b' ,'3' , 'a' } ;
    char *temp ;
    temp = (char*) malloc (sizeof (char ) *6 ) ;
    
    
    if ( ! (chars[i] >= '0'  && chars [i]  <= '9' ) )  /* questa riga è il problema */
    {
    
    *temp = chars [i] + tot ;
    }
    
    
    else
    {
    *temp = chars [i] - tot ;
    
    }

    allora ;
    le parentesi tonde hanno priorità su tutto nella riga , in questione , dunque prima viene valutato che le condizioni dei due && siano vere
    , e successivamente che siano false con il "!" ( NOT)


    ho capito correttamente?



    grazie

  2. #2

    Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da toni00c
    if ( ! (chars[i] >= '0' && chars [i] <= '9' ) ) /* questa riga è il problema */

    ...

    ho capito correttamente?



    grazie
    No. Quel ! davanti ad una condizione ne inverte il risultato.
    Cioè l'if controlla sempre che un espressione sia vera tranne quando specifichi tu la condizione da verificare.

    Quel codice controlla che la condizione AND sia vera, e la fa inverte quindi se è true diventa false, se è false diventa true (sono operatori dell'algebra di boole).
    per controllare che l'espressione AND sia falsa devi fare

    codice:
    if ( (chars[i] >= '0' && chars [i] <= '9' ) == false )

  3. #3
    ciao lolide quindi in pratica se la condizione è falsa esegue la prima istruzione , altrimente
    l'else!

    ho capito bene ?

    grazie

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da lolide
    per controllare che l'espressione AND sia falsa devi fare
    codice:
    if ( (chars[i] >= '0' && chars [i] <= '9' ) == false )
    Come ha scritto lui è corretto (e comunque in C non esiste una parola chiave false).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5

    Re: Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da Alex'87
    e comunque in C non esiste una parola chiave false).
    Giusto. Comunque usa 0 e 1

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da lolide
    Comunque usa 0 e 1
    No. Usa 0 per "falso" e qualsiasi altro valore per "vero".
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7

    Re: Re: Re: Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da Alex'87
    No. Usa 0 per "falso" e qualsiasi altro valore per "vero".
    Si comunque io per non farmi venire una tendinite alle dita uso 0 e 1

    Se è vera puoi pure usare 102920392 qualsiasi numero > 0 è considerato true

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Originariamente inviato da lolide
    Se è vera puoi pure usare 102920392 qualsiasi numero > 0 è considerato true
    No. Qualsiasi numero diverso da 0 è considerato true.

    Questo programmino stamperà "hello!" a schermo
    codice:
    #include <stdio.h>
    
    int main(int argc, char **argv) {
    	if (-1) {
    		printf("hello!\n");
    	}
    
    	return 0;
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9

    Re: Re: Re: Re: Re: Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    Aggiungo qualcosa anch'io a sto punto: è così perchè una variabile minore di un byte in C non esiste, anche i bool in realtà sono di un byte e non di un bit


  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39

    Re: Re: [C] dubbio su operatore logico ! e priorità operatori

    @ toni00c

    quell'istruzione esegue l'and e poi inverte il risultato. in pratica fa l'else solo se tutte e 2 le condizioni sono vere.

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.