[問題] 沒有return

看板C_and_CPP作者 (喵)時間15年前 (2010/10/20 01:42), 編輯推噓1(1017)
留言18則, 6人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) #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)

10/20 01:44, , 1F
好難的問題,請高手解答
10/20 01:44, 1F

10/20 01:45, , 2F
因為你編譯沒過,執行到編譯過的執行檔去了
10/20 01:45, 2F

10/20 01:47, , 3F
重點就是我編譯還過得了...
10/20 01:47, 3F

10/20 01:57, , 4F
重點是我編譯過不了
10/20 01:57, 4F

10/20 02:00, , 5F
應該是編譯器的問題,我用DEVC可,VC不行~~
10/20 02:00, 5F

10/20 02:00, , 6F
我用DevC不行
10/20 02:00, 6F

10/20 02:01, , 7F
哪尼 那就怪了XDDDD
10/20 02:01, 7F

10/20 02:01, , 8F
能給你的建議是:請不要這麼寫
10/20 02:01, 8F

10/20 02:03, , 9F
用gcc可以編過
10/20 02:03, 9F

10/20 02:05, , 10F
我知道不要怎麼寫 可編譯先撇開 我想問的是 為什麼會出現
10/20 02:05, 10F

10/20 02:05, , 11F
正確的結果
10/20 02:05, 11F

10/20 02:07, , 12F
運氣好的話EAX被當成a,而EAX本來就被當成回傳值用
10/20 02:07, 12F

10/20 02:13, , 13F
http://nopaste.csie.org/f1b61 這是我編出來的組合語言
10/20 02:13, 13F

10/20 02:15, , 14F
push 0;pop eax ; mov edx,arg1;add edx,3;mov eax,edx
10/20 02:15, 14F

10/20 02:21, , 15F
j大的結果跟我猜的一樣,eax被寫入a值回傳了
10/20 02:21, 15F

10/20 02:22, , 16F
感謝解答 所以只是巧合而已@@
10/20 02:22, 16F

10/20 09:12, , 17F
不要讓電腦有模稜兩可的選擇,即便它這回有了正確的結果,
10/20 09:12, 17F

10/20 09:12, , 18F
但不保證下一次也可以得到正確結果.
10/20 09:12, 18F
文章代碼(AID): #1ClTXleU (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ClTXleU (C_and_CPP)