作者likelihood (賴可立虎得)
看板C_and_CPP
標題[問題] ++與指標的問題
時間Tue Mar 2 15:44:37 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
int main(void)
{
int a=12;
double b=34.56;
int *p1;
double *p2;
p1 = &a;
p2 = &b;
*p1 = 78;
printf("%d%d",++a,*p1);
system("pause");
return 0;
}
//------------(說明)
結果run出來是 7978
printf("%d%d",++a,*p1); 這行中,我會認為是++a先作
所以在print第一個值得的時候就很正確的印出79
但,p1是指向a的指標~為何取出的值卻是還沒有更改的78呢??
希望得到的正確結果:
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev C++
有問題的code: (請善用置底文標色功能)
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.125.81.125
※ 編輯: likelihood 來自: 120.125.81.125 (03/02 15:45)
→ nowar100:undefined behavior 03/02 15:59
→ VictorTom:再說的更明確一點, function param(還是argu??)的 03/02 16:44
→ VictorTom:evaluation順序是compiler自行設計的, 沒有規定前面的 03/02 16:44
→ VictorTom:參數一定會先evaluate :) 03/02 16:45