作者wind0427 (邱邱)
看板C_and_CPP
標題[問題] C++輸出的問題
時間Mon Feb 8 20:45:18 2010
遇到的問題: (題意請描述清楚)
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
1F:推 legnaleurc:binsearch 沒先算完 printf 要怎麼用它的回傳值? 02/08 23:09
2F:推 annheilong:補充1樓 因為printf要等到%d得到值才會印 02/09 11:02
3F:→ wind0427:我懂了 感謝樓上兩位 02/09 19:29