Domanda sulle operazioni delle variabili

di il
10 risposte

Domanda sulle operazioni delle variabili

Salve, da poco ho iniziato lo studio da autodidatta del linguaggio C, vorrei un chiarimento su un passaggio sulle variabili.
"La scrittura a++ è invece un incremento della variabile a, ed equivale a a=a+1 (così
come la scrittura a-- equivale a a=a-1)." Quindi il mio dubbio riguarda a++ e a-- ecc..
Non ho capito cosa si intende, intende forse che quando è prensente a++ bisogna aggiungere il valore 1 ad una variabile? Oppure altro?

10 Risposte

  • Re: Domanda sulle operazioni delle variabili

    A++ equivale ad a=a+1

    cosa non comprendi di questa affermazione?
  • Re: Domanda sulle operazioni delle variabili

    Diciamo che dipende dal contesto.
    a++ e ++a sono rispettivamente post e pre-incrementi.
    Se usati "da soli" sono equivalenti ad
    a=a+1
    Ciò non è però sempre vero in statement composti.
    Si tratta essenzialmente di "zucchero sintattico", nulla più.

    Per essere precisi, in realtà, ci sono spesso differenze a run time nel codice generato dai compilatori: spesso ++a è più veloce di a++ (cuttone sul perchè)

    Suggerimento: poni a=3 e poi stampa il contenuto a video di a++ e ++a
  • Re: Domanda sulle operazioni delle variabili

    Allora penso di aver capito bene, ovvero che la variabile a incrementa di un'unità, giusto?
    Mi confondeva la doppia a cioè "a a=a+1" ma dalla tua risposta credo che la prima "a" sia parte del testo e non della variabile.
  • Re: Domanda sulle operazioni delle variabili

    ... equivale ad a=a+1 ...
  • Re: Domanda sulle operazioni delle variabili

    Vi ringrazio per il chiarimento.
  • Re: Domanda sulle operazioni delle variabili

    ak13 ha scritto:


    Allora penso di aver capito bene, ovvero che la variabile a incrementa di un'unità, giusto?
    Mi confondeva la doppia a cioè "a a=a+1" ma dalla tua risposta credo che la prima "a" sia parte del testo e non della variabile.
    Hai provato a fare come ti ho scritto?
  • Re: Domanda sulle operazioni delle variabili

    Si è confuso con la "preposizione a" ... mi sembra che adesso gli sia chiaro ...
  • Re: Domanda sulle operazioni delle variabili

    maxilrosso ha scritto:


    Sapevo che in teoria a++ è più veloce di a=a+1, ma questa non me la spiego... riesci a dirmi qualcosa? thanks
    Trovi una completa spiegazione, concisa ma corretta, ad esempio qui.

    In ogni caso, e con buona pace di chi cerca di sottrarvisi (specialmente dal lato sbagliato della cattedra), vale sempre il Dogma Universale della Programmazione in C: il Vero Programmatore deve conoscere con precisione l'output in codice macchina del proprio compilatore per i più vari idiomi e, quando opportuno, misurarne anche puntualmente le prestazioni sulla piattaforma target. Your mileage may vary.
  • Re: Domanda sulle operazioni delle variabili

    maxilrosso ha scritto:


    riesci a darmi una spiegazione?

    grazie
    Facile: vengono usati i registri della CPU e opportune istruzioni assembler.
    Tempo di esecuzione nei due casi: gli stessi.

    Comunque qui si entra in un discorso un po' complicato.
    Ha poco senso fare dei test di performance a questo livello se non si conosce la struttura hardware sottostante.
    Si e' troppo dipendenti da ottimizzazioni del compilatore, efficenza della CPU, versione del compilatore, ...
    Troppe variabili.

    Test di performance si fanno su interi ALGORITMI o su intere STRUTTURE DATI, dove le differenze si misurano in termini di COMPLESSITA' COMPUTAZIONALE, piu' che millisecondi.
  • Re: Domanda sulle operazioni delle variabili

    Puoi sempre esaminare il codice assembler prodotto dal compilatore. Ti accorgerai che è.comunque qualcosa come

    inc eax

    nei due casi
Devi accedere o registrarti per scrivere nel forum
10 risposte