Re: [問題] 變數放置問題

看板C_and_CPP (C/C++)作者 (New CygnusX)時間16年前 (2009/08/28 04:59), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《aticsu (uscita)》之銘言: : 想請教大家一個變數放置的問題 : 程式裡陣列變數a當成全域變數沒有問題 dev-c++可以正常執行 : 但是一旦我將牠放入main function裡面 : 就會有error發生 : 錯誤訊息: : AppName: test.exe AppVer: 0.0.0.0 ModName: test.exe : ModVer: 0.0.0.0 Offset: 000019d3 : 不知道是哪邊出錯 : scope範圍應該都是對的啊~ 程式如下:(下面這是會產生錯誤的 可自行將註解位置對調即可正確執行) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 不是很懂你這句話 我嘗試用猜的 : #include<stdio.h> : #include<stdlib.h> : //int a[1000000]; 首先是這行註解拿掉 : long long CycLen(long long i){ : long long cont = 1; : do{ : if (i==1) break; : if (i%2==0){ : i=i/2; : cont++; : } : else{ : i=3*i+1; : cont++; : } : }while(i!=1); : return cont; : } : int main(void){ : int i=1; : int a[1000000]; 把這行註解掉 ------------------ (*) : int j=1; : int max = 0; : while (scanf("%d%d",&i,&j)!=EOF){ : if(i<=0||j>=1000000){ : break; : } : int minn = i; : int maxn = j; : if(i>j){ : int temp; : temp = minn; : minn = maxn; : maxn = temp; : } : max = 0; : for (long long k=minn;k<=maxn;k++){ : a[k] = CycLen(k); : } : for (long long k=minn;k<=maxn;k++){ : if (a[k]>max){ : max = a[k]; : } : } : printf("%d %d %d\n",i,j,max); : } : system("pause"); : return 0; : } 如果我猜的沒錯的話 那這error的解法是: 把 (*)處改成 int *a=new int [1000000]; 原因是1000000太多,必須要用new 另外建議你: 1. 把問題講清楚 2. 請人看code,不是直接複製貼上,置底有貼code空間 -- 我的露天拍賣: http://tinyurl.com/6z4rw7 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.4.48

08/28 12:17, , 1F
不好意思 請問為什麼1000000太多~最大可以到多少呢? 謝謝~
08/28 12:17, 1F

08/28 13:54, , 2F
stack大小固定,所以能放在stack內的變數也有限
08/28 13:54, 2F

08/28 14:13, , 3F
文章代碼(AID): #1AblF7wY (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1AblF7wY (C_and_CPP)