看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) #include <stdio.h> #include <stdlib.h> int f1(int b) { int a; a = b +3; //return a; } int main() { int x,y,p; x = 1; printf("%d",f1(x)); system("pause"); return 0; } 希望得到的正確結果:想請問f1明明就是int 沒有return值卻還能得到正確結果 開發平台: DevC++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.89.238 ※ 編輯: kroutony 來自: 125.224.89.238 (10/20 01:42) ※ 編輯: kroutony 來自: 125.224.89.238 (10/20 01:43)
stupid0319:好難的問題,請高手解答 10/20 01:44
stupid0319:因為你編譯沒過,執行到編譯過的執行檔去了 10/20 01:45
kroutony:重點就是我編譯還過得了... 10/20 01:47
sosokill:重點是我編譯過不了 10/20 01:57
ilemon:應該是編譯器的問題,我用DEVC可,VC不行~~ 10/20 02:00
sosokill:我用DevC不行 10/20 02:00
ilemon:哪尼 那就怪了XDDDD 10/20 02:01
james732:能給你的建議是:請不要這麼寫 10/20 02:01
james732:用gcc可以編過 10/20 02:03
kroutony:我知道不要怎麼寫 可編譯先撇開 我想問的是 為什麼會出現 10/20 02:05
kroutony:正確的結果 10/20 02:05
stupid0319:運氣好的話EAX被當成a,而EAX本來就被當成回傳值用 10/20 02:07
james732:http://nopaste.csie.org/f1b61 這是我編出來的組合語言 10/20 02:13
stupid0319:push 0;pop eax ; mov edx,arg1;add edx,3;mov eax,edx 10/20 02:15
stupid0319:j大的結果跟我猜的一樣,eax被寫入a值回傳了 10/20 02:21
kroutony:感謝解答 所以只是巧合而已@@ 10/20 02:22
ericinttu:不要讓電腦有模稜兩可的選擇,即便它這回有了正確的結果, 10/20 09:12
ericinttu:但不保證下一次也可以得到正確結果. 10/20 09:12