最近我迷茫了下面的C++代碼片段:表達式求值順序
#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;
}
看看行:
int w = k + lol(&k);
到現在爲止我認爲這表達式將被評估,從左至右:取k的當前值(calall函數爲0之前),然後將其加到lol函數的結果中。但是編譯器證明了我,我錯了,W的值是10,即使我交換位置,使其
int w = lol(&k) + k;
結果將是仍然10.我在做什麼錯?
託梅克
沒有,'+'是最後一個操作 – volody