看板 C_and_CPP 關於我們 聯絡資訊
程式碼(Code):(請善用置底文網頁, 記得排版) int s1(int x,int *y){ x+=5; *y*=2; return *y+x; } int s2(int *x,int y){ *x+=5; y*=2; return *x+y; } void main(){ int a=3,b=5,c,d; c=s1(a,&b)+s2(&a,b);//請問在這邊s1(a,&b)和s2(&a,b)是同時執行嗎? 帶入的值是(3,5)嗎? d=s2(&a,b)+s1(a,&b); } 最後輸出的結果是a=13 b=10 c=46 d=71 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.138.205
james732:不會有同時執行這種事,一定是一先一後 02/28 01:21
james732:這個程式應該有踩到置底十三戒的第八 02/28 01:22
ducksky:我怎麼一直算 C=41 d=86 不曉得哪邊算錯 02/28 01:55
iamstudent:s1和s2的優先順序並沒有規定,編譯器可以任意實做 02/28 02:17
iamstudent:也可以在最佳化時做先後調整 02/28 02:18
iamstudent:這個寫法的期望會仰賴在編譯器實做,就是不應該的寫法 02/28 02:21
fengchu:這一個thread文章在討論相同的問題 #18tImojl 02/28 03:05