Problema con incremento e decremento

di il
4 risposte

Problema con incremento e decremento

Salve ragazzi, ho da poco iniziato a studiare il C++ e ho appena iniziato gli operatori di incremento e decremento, credevo di averli capiti ma poi il libro mi fa questo esempio:
#include <iostream>
using namespace std;

main ()
{
    int n=5, t;
    t=++n * --n;
    cout<<"n = "<<n<<" t = " <<t<<endl;
    cout<<++n<<" "<<++n<< " "<<++n<<endl;
}
Dicendomi che il risultato del secondo "cout" avrebbe dovuto essere 6, 7 e 8, mentre a me viene 8, 8 e 8. Credevo fosse un errore, ma scrivendo gli stessi operatori in righe diverse il risultato è quello del libro.

Ho anche provato a modificare il codice con
cout << n++ << " " << n << " " << ++n << endl;
Ottenendo come risultato 6, 7 e 7 mentre su righe diverse viene 5, 6 e 7.

So che è una domanda stupida, ma io non sono proprio riuscito a trovare una spiegazione.
Qualcuno sarebbe così gentile da aiutarmi?

4 Risposte

  • Re: Problema con incremento e decremento

    Ci fai vedere il testo del libro?
  • Re: Problema con incremento e decremento

    Certo, mando una foto così evito di fare errori
    Allegati:
    24335_0b14dac1e1b2bdf533c2635b941b886f.jpg
    24335_0b14dac1e1b2bdf533c2635b941b886f.jpg
  • Re: Problema con incremento e decremento

    Non so quale sia il testo da cui stai studiando ma in realtà sono tutti casi di undefined behaviour e non c'è alcuna garanzia che le cose vadano come dice il libro, per cui è possibile che compilatori diversi diano risultati diversi
  • Re: Problema con incremento e decremento

    Ah grazie mille!
    Un'ultima domanda: per risolverlo quindi dovrei scrivere una cosa del genere?
    
    #include <iostream>
    using namespace std;
    
    main ()
    {
        int n = 5, t, u, v;
        t = n++;
        u = n--;
        v = u * t;
        cout << "n = " << n <<", v = " << v << endl;
        cout << ++n << endl;
        cout << ++n << endl;
        cout << ++n << endl;
    }
    
    
Devi accedere o registrarti per scrivere nel forum
4 risposte