[問題] return用法

看板C_and_CPP作者 (C-hot)時間14年前 (2010/02/13 00:01), 編輯推噓6(6010)
留言16則, 6人參與, 最新討論串1/1
#include <iostream> using namespace std; int binsearch(int * dset, int ib, int ie, int data) { cout << "search: ib = " << ib << ", ie = " << ie << endl; int ii; if (ib > ie) {ii = -1; } else { ii = (ib + ie) / 2; if (dset[ii] > data) { ii = binsearch(dset, ib, ii-1, data); } else if (dset[ii] < data) { ii = binsearch(dset, ii+1, ie, data); } } cout <<"search ib = "<<ib<<", ie = "<<ie<<" return: "<<ii<<endl; return ii; //回傳到哪呢? } int main() {int dset[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33}; cout << "Final data 13 is at: " << binsearch(dset,0,15,13) << endl; cout << "Final data 20 is at: " << binsearch(dset,0,15,20) << endl; return 0; system("pause"); } ======================================= 印出 search: ib = 0, ie = 15 search: ib = 0, ie = 6 search: ib = 4, ie = 6 search: ib = 6, ie = 6 search ib = 6, ie = 6 return: 6 search ib = 4, ie = 6 return: 6 //請問這行是如何印出的? search ib = 0, ie = 6 return: 6 search ib = 0, ie = 15 return: 6 Final data 13 is at: 6 search: ib = 0, ie = 15 search: ib = 8, ie = 15 search: ib = 8, ie = 10 search: ib = 10, ie = 10 search: ib = 10, ie = 9 search ib = 10, ie = 9 return: -1 search ib = 10, ie = 10 return: -1 search ib = 8, ie = 10 return: -1 search ib = 8, ie = 15 return: -1 search ib = 0, ie = 15 return: -1 Final data 20 is at: -1 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: chot 來自: 218.172.87.94 (02/13 00:19)

02/13 00:24, , 1F
縮排有夠難看的, 這樣子看code你不覺得辛苦嗎~_~
02/13 00:24, 1F

02/13 00:24, , 2F
function的return value是回傳給call這個function的地方
02/13 00:24, 2F

02/13 00:25, , 3F
, 另外也還要看call的那一邊有沒有把它'收'下來....
02/13 00:25, 3F

02/13 00:25, , 4F
具體是怎麼運作, 包含後面怎麼印出來的問題, 給你個建議
02/13 00:25, 4F

02/13 00:26, , 5F
拿出你的IDE裡的step by step功能, 從頭到尾一行一行完
02/13 00:26, 5F

02/13 00:27, , 6F
整的trace過一遍, 你就知道你兩個問題的答案@_@"
02/13 00:27, 6F

02/13 00:28, , 7F
最後, main裡的system()不會執行到, 除非你改放到
02/13 00:28, 7F

02/13 00:29, , 8F
return 0的前面; 或者查查書上講function的章節吧:)
02/13 00:29, 8F

02/13 02:14, , 9F
原 po 需要的是書,以及好好讀書的心理準備
02/13 02:14, 9F

02/13 11:52, , 10F
建議if裡面如果只有一行的話 不需要加block也可以
02/13 11:52, 10F

02/13 13:34, , 11F
如果可以全部展開if一行else一行這樣, 不寫{}是滿清爽的
02/13 13:34, 11F

02/13 13:34, , 12F
但是有巢狀或者有的一行有的多行, {}最好不要去省吧@_@"
02/13 13:34, 12F

02/14 23:52, , 13F
這code... 我瞎了 ~(●_●)~
02/14 23:52, 13F

02/15 08:39, , 14F
以x86來說,要return的東西是放在eax中,回傳給上一個要
02/15 08:39, 14F

02/15 08:39, , 15F
呼叫的地方。
02/15 08:39, 15F

02/16 11:39, , 16F
置底有很多貼code的網站 縮排就會被保留
02/16 11:39, 16F
文章代碼(AID): #1BTNjry3 (C_and_CPP)