2015-06-12 26 views
6

Perché "n * n" risulta come 4 al primo istante del ciclo? per me dovrebbe essere 1 * 1. invece viene come 2 * 2.perché n * n risulta come 4 al primo istante del ciclo? per me dovrebbe essere 1 * 1. invece viene come 2 * 2

Vi prego di dare una risposta semplice come io sono ancora un principiante :)

#include <iostream> 
using namespace std; 
int main(){ 

    int n =1 , *p; 
    p = &n; 

    char aString[] = {"student"}; 

    for (int i = 0; i<5; i++) 

     cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n++<< " *p "<<endl; 

    system ("pause"); 
    return 0; 
} 

http://ideone.com/nWugmm

risposta

6

L'ordine di valutazione degli elementi in un'espressione non è specificato, ad eccezione di alcuni casi molto particolari, come ad esempio il & & e || ecc

scrittura:

cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n++<< " *p "<<endl; 

supporti un ordine e in particulr che n ++ è l'ultimo valutata.

Per risolvere questo problema si potrebbe dividere l'Exression in due parti:

cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n<< " *p "<<endl; 
n++; 
0

Ordine di valutazione non è specificato, non è da sinistra a destra come si potrebbe pensare e non è da destra a sinistra.

Dividere il codice come suggerito da Daniele se il tuo codice si basa sull'ordine.

E compilare il codice con un livello di avviso elevato, il compilatore può aiutarti a individuare questo.