Re: [問題] 宣告變數的位置
自問自答....
原因在於result[50][10]
result最多只有到[49][9]
但是我卻做了給result[50][..]值的動作
所以因此就覆蓋到spec的內容(所以其實被覆蓋到的可能不只spec這個變數)
或許是Dev-C++不嚴謹或其他原因
compile時他並沒有告訴我out of boundary之類的錯誤提示
不過印象中這類的錯誤如果是用工作站跑的話
應該會出現 "Segmentation fault"的錯誤訊息
雖然這應該是自己要注意的地方 不過不曉得板上有沒有Dev-C++的使用者
知道如何提升syntax或是memory運用上的警告 錯誤提示?
至於為什麼改變宣告順序就會正常
我想也只是運氣問題 他可能蓋到別的地方去了
※ 引述《gppo (香蕉是什麼?)》之銘言:
: 我遇到了一個很奇怪的問題....
: 想破頭還是不知道原因
: 所以來版上問問orz
: 有段程式碼如下
: bool PA_gen(float* spec,....略);
: int main(int argc, char *argv[])
: {
: float spec[8]={0.0,0.0,1.2,1.0,1.8,0.0,0.6,0.3};
: float result[50][10]={0};
: .....略
: if(PA_gen(spec,.....略))
: {
: }
: ...略
: }
: bool PA_gen(float* spec,....略)
: {
: cout << spec[2] ;
: }
: 理論上應該要印出spec[2]的值 也就是1.2
: 但是他印出來是0(也不是0.0 是0)
: 但是如果改變一下宣告位置
: float result[50][10]={0};
: float spec[8]={0.0,0.0,1.2,1.0,1.8,0.0,0.6,0.3};
: 改成先宣告result再宣告spec
: 很神奇的他就可以正確印出來了
: 我無法理解明明就差上下行而以 為什麼會有差異....
: 如果有說明不清楚的地方請在提出orz
: 我會想辦法將不清楚的地方說明白
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.187.104
推
03/11 18:13, , 1F
03/11 18:13, 1F
→
03/11 18:14, , 2F
03/11 18:14, 2F
→
03/11 18:14, , 3F
03/11 18:14, 3F
→
03/11 18:14, , 4F
03/11 18:14, 4F
→
03/11 18:15, , 5F
03/11 18:15, 5F
推
03/11 18:24, , 6F
03/11 18:24, 6F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
26
152