Niedawno irytować brzmienie C++ urywek:Expression zamówienie ocena
#include <cstdio>
int lol(int *k){
*k +=5;
return *k;
}
int main(int argc, const char *argv[]){
int k = 0;
int w = k + lol(&k);
printf("%d\n", w);
return 0;
}
Spójrz na linii:
int w = k + lol(&k);
Do tej pory myślałem, że to wyrażenie będzie obliczane od lewej do prawej : bierz aktualną wartość k (która przed wywołaniem funkcji lol wynosi 0), a następnie dodaj ją do wyniku funkcji lol. Ale kompilator udowadnia mi, że się mylę, wartość w wynosi 10. Nawet jeśli zamienić się miejscami, aby to
int w = lol(&k) + k;
wynik byłby jeszcze 10. Co robię źle?
Tomka
nic, '+' jest ostatnim op – volody