In x = x + 1
, è x
valutato due volte? In tal caso, ciò significa in x += 1
, x
viene valutato solo una volta? Come vengono valutate le due espressioni in termini di codice intermedio del compilatore?È x + = 1 più efficiente di x = x + 1?
Ad esempio, x++
potrebbe significare: prendere la posizione di x
, caricare il contenuto di x
in un registro, e incrementare il valore di x
in memoria.
Inoltre ho letto che x += 1
è utile quando x
non è una variabile semplice, ma un'espressione che coinvolge un array. Qualche idea del perché questo è il caso?
Questo suona come un sacco di ipotesi infondate, in particolare il titolo. Non vedo una ragione per cui uno dovrebbe essere più efficiente dell'altro e sono ragionevolmente sicuro che non sia il caso della maggior parte dei compilatori C. –
Un compilatore che vale i soldi che hai pagato compilerà entrambe le espressioni con lo stesso codice oggetto. Se sei preoccupato per le prestazioni: ** misura **, misura un codice diverso, diversi flag di compilazione, utilizzo di risorse diverse, tutto diverso. – pmg
Sai che x + = 1 è più efficiente di x = x + 1? Hai guardato il codice dell'oggetto generato? – Joe