看板 C_and_CPP 關於我們 聯絡資訊
使用軟體:dev-c++ 4.9.9.2 我遇到的問題應該很基本,可是想很久不知道為什麼,也沒人可以問Q_Q 問題是編譯不過,我也有查到是哪裡的問題 ===========程式碼============ #include<iostream> using namespace std; int a[]={52,31,27,64,100,10,2,34}; int maxmin(int *, int , int & , int &); int max=0,min=0; //這行max跟min的宣告如果放在main裡面 //編譯才會過且執行正確 int main() { maxmin(a,7,max,min); cout<<"max:"<<max<<endl<<"min:"<<min<<endl; system("pause"); } int maxmin(int *a, int i, int &max, int &min) { if(i==0) { max=a[0]; min=a[0]; } else { maxmin(a,i-1,max,min); if(max<a[i]) {max=a[i];} if(min>a[i]) {min=a[i];} } } ===================================================== 編譯的錯誤是main裡面的max跟min未定義,可是我把它寫成global, 照理說應該沒這問題吧0.0 不知道為什麼一定要放在main裡面 ===================================================== 我發現好像是max跟min這兩個名稱的問題?用其它字眼取代就可以了 0.0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.122.183
adks3489:為什麼寫成global,卻還要傳... 12/18 14:51
conan77420:經樓上這麼依說我發現我多此一舉,當時沒想這麼多XD 12/18 14:59
※ 編輯: conan77420 來自: 61.229.122.183 (12/18 15:00)
littleshan:因為 min 和 max 是標準函式庫中的 function template 12/18 15:00
littleshan:你宣告在 global 就會撞名 12/18 15:01
littleshan:但宣告在 local 會優先被使用 12/18 15:02
conan77420:瞭解了!記得以前只聽說不要直接用max跟min,不知原因 12/18 15:03