Eventuali duplicati:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
increment values in printfIn C/C++ è x [i] * y [i ++] sempre uguale a x [i] * y [i]
Ho due doppi array x
e e intero i
. La mia domanda è se la dichiarazione:
double res = x[i] * y[i++];
è sempre uguale alla dichiarazione:
double res = x[i] * y[i];
i++;
E 'possibile che alcuni compilatori cambierebbero x[i] * y[i++]
in y[i++] * x[i]
, che ovviamente produce risultati diversi?
Perché è importante? Se vuoi un ordine specifico, basta scriverlo in questo ordine. –
@BoPersson. Ho pensato di scrivere spiegazioni perché ne ho bisogno, ma non volevo rovinare la domanda. A breve, ho bisogno di accelerare la funzione 'double vectors_dot_product (double * x, double * y, int n);' e ho trovato che 'x [i] * y [i ++] + x [i] * y [i ++] +. ..; 'è più veloce di' x [i] * y [i] + x [i + 1] * y [i + 1] + ...; ' – Serg