Originariamente inviato da folk3n
ciao a tutti!!!
qualcuno può aiutarmi a capire come funziona questa riga d codice:
codice:
for(x=1,a=n=0; n<10; n+=x++) a+=n;
in C++???
vi scrivo tutto il programmino
codice:
#include<iostream>
using namespace std;

int main(){
int x,a,n;
for(x=1,a=n=0; n<10; n+=x++) a+=n; //la riga che nn capisco è questa!!!
cout<<x;
system("pause");
return 0;
}
Precisazioni doverose: 1)l'output a video è 5
2)io uso Dev-C++ 4.9.8.0
grazie mille in anticipo per l'aiuto
Praticamente il rigone si può espandere in
codice:
x = 1;
a = 0;
for(n=0; n < 10; n+=x)
{
  x++;
  a+=n;
}
perché:
  • a=n=0 è come dire a = 0 e n = 0;
  • x=1,a=n=0 usa il famigerato "operatore virgola" per far eseguire le due istruzioni insieme; se si fosse usato il ";" si sarebbe creata confusione con la condizione di fine ciclo;
  • n+=x++ vuol dire "aggiungi x ad n, e poi (il ++ è un post-incremento) incrementa x". Quindi, ad ogni iterazione, n aumenterà di 1, poi di 2, poi di 3...
  • chi ha scritto tuttoquestopopodiroba in una sola riga è un programmatore molto esperto di C, che ha preferito scrivere poco codice piuttosto che scriverne di comprensibile (lo sfiderei a capire al volo cosa fa quel ciclo un mese dopo everlo scritto! è un vero casino!)


Sono d'accordo, è proprio carina VVoVe:VVoVe:VVoVe: