[問題] C++輸出的問題

看板C_and_CPP (C/C++)作者 (邱邱)時間16年前 (2010/02/08 20:45), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) printf("Final data 13 is at: %d\n",binsearch(dest,0,15,13)); printf("Final data 20 is at: %d\n",binsearch(dest,0,15,20)); 這兩段輸出 輸出的結果都是先輸出binsearch再輸出Final data XX is at 實在是不知道為什麼? 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Microsoft Vistual C++ 2008 Express Edition 有問題的code: (請善用置底文標色功能) // seaway_exam.cpp : 定義主控台應用程式的進入點。 // #include "stdafx.h" #include <stdlib.h> int binsearch(int dest[],int ib,int ie,int data); void main() { int a=0; int dest[]={1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33}; printf("Final data 13 is at: %d\n",binsearch(dest,0,15,13)); printf("Final data 20 is at: %d\n",binsearch(dest,0,15,20)); scanf("%d",&a); } int binsearch(int dest[],int ib,int ie,int data) { printf("search:ib=%d ie=%d \n",ib,ie); int ii; if(ib > ie) { ii=-1;} else { ii=(ib+ie)/2; if(dest[ii]>data) { ii=binsearch(dest,ib,ii-1,data); } else if(dest[ii] < data) { ii=binsearch(dest,ii+1,ie,data); } } printf("search ib=%d,ie=%d return:%d\n",ib,ie,ii); return ii; } 補充說明: 程式的輸出結果如右:http://0rz.tw/ZK5w5 想請問 printf("Final data 13 is at: %d\n",binsearch(dest,0,15,13)); printf("Final data 20 is at: %d\n",binsearch(dest,0,15,20)); 這兩段輸出 輸出的結果都是先輸出binsearch再輸出Final data XX is at XX 明明就Final data 13 is at排前面? 想不通為什麼?感謝各位啦!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.226.53

02/08 23:09, , 1F
binsearch 沒先算完 printf 要怎麼用它的回傳值?
02/08 23:09, 1F

02/09 11:02, , 2F
補充1樓 因為printf要等到%d得到值才會印
02/09 11:02, 2F

02/09 19:29, , 3F
我懂了 感謝樓上兩位
02/09 19:29, 3F
文章代碼(AID): #1BS0TX2w (C_and_CPP)
文章代碼(AID): #1BS0TX2w (C_and_CPP)