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

    Istruzione ciclo FOR dopo contatore

    Salve a tutti,
    non riesco a risolvere un problema che penso sia banale.
    Ecco il dilemma: se svolgo la somma dei primi n numeri naturali con questa tipologia di for, tutto fila liscio:

    codice:
    int somma_naturali(int n){
    int s=0,i;
    for (i = 1; i <= n; i++)
    s+=i;
    return s;
    }
    Se, invece, lo svolgo inserendo la somma nel ciclo for stesso, il risultato è diverso:

    codice:
    int somma_naturali(int n){
    int s=0,i;
    for (i = 1; i <= n; i++,s+=i);
    return s;
    }
    Qualcuno sa dirmi perchè? L'istruzione non dovrebbe essere la stessa?
    Grazie a tutti e scusate la perdita di tempo.

    Saluti,
    Marco

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No, non è affatto la stessa. Prova a seguire passo passo cosa fa la for e comprendi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Forse ho capito..
    Il risultato non è lo stesso perchè la s viene incrementata solo dopo che viene incrementata la i, di conseguenza il risultato è fasullo.
    Ho corretto così, dovrebbe andar bene, giusto?

    codice:
    int somma_naturali(int n){
    int s=0,i;
    for (i = 0; i < n; i++,s+=i);
    return s;
    }

  4. #4

    Moderazione

    Di che linguaggio stiamo parlando esattamente?
    Amaro C++, il gusto pieno dell'undefined behavior.

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.