推 singlovesong:書寫錯了 09/23 09:36
→ bibo9901:只有0可以這樣 09/23 09:56
→ Fan383:喔喔 感謝樓上 09/23 09:58
推 stupid0319:好書,好書 09/23 10:11
→ maerdimer:哪一本阿 洪維恩嗎XD 09/23 10:41
→ sardine:int data[n]={0} -> data[n]=n why?? 09/23 10:47
→ sardine:偶然發現的 09/23 10:47
→ sardine:不過第n+2項(data[n+1])之後沒宣告的部份值就亂跳了 09/23 10:50
→ suhorng:data[n]=n 是湊巧吧, data[n] 已經超過陣列範圍了 09/23 10:52
→ suhorng:搞不好你看到的那個值n 就是變數n的 -..- 09/23 10:52
→ sardine:是阿 所以我才覺得神奇 而且n隨便取20 30都會準 09/23 10:53
→ suhorng:因為超出所以所以存到n的值(同位置)...程式碼改一下就錯了 09/23 10:54
→ suhorng:比如, 你把 n 改在全域宣告成 const int n = XXX; 09/23 10:55
→ suhorng:然後 int data[n] 開在區域 09/23 10:55
→ suhorng:在你PC上存取到i的值. 把i改成全域就爆了 09/23 10:59
→ suhorng:data[n]本來就是個沒宣告的地方 09/23 11:00
→ sardine:那為啥我的pc這麼特別XD Win7.. 09/23 11:02
→ yauhh:有很特別嗎? 09/23 11:03
→ sardine:我好奇的是 我的電腦怎麼會有這麼巧的輸出XD 09/23 11:03
→ yauhh:因為你自己把data[115]指定為115啊 09/23 11:04
→ yauhh:喔抱歉我看錯了 09/23 11:05
→ sardine:?? 有嗎 ?? 我哪邊做了這事?? 09/23 11:05
→ sardine:我不太理解 超出所以存取到n 的意思 09/23 11:09
→ yauhh:答案是,你看看在 int data[115] 之後宣告的變數是什麼. 09/23 11:12
→ yauhh:定址剛好把自動變數排在一起, &data[115] == &i 09/23 11:12
→ suhorng:不是你的電腦特殊, 我的電腦上也是這樣 09/23 11:14
→ yauhh:我Ubuntu寫一個也一模一樣. 09/23 11:14
→ suhorng:但是換種編譯器/換不同版本/換到其他作業系統可能就爆了 09/23 11:15
→ james732:data[10]其實就是後面的那個i變數啊…XDDD 09/23 11:15
→ sardine:雖然這說法可以理解 不過這算不算complier的缺失阿XD 09/23 11:16
→ yauhh:不是,向來都是這個樣子 09/23 11:16
→ bibo9901:不算啊, 你跟本不應該使用到data[n]的 09/23 11:17
→ james732:C語言是一個違規可以動但不保證結果的神奇語言XD 09/23 11:19
→ james732:聽說設計的時候是假設程式設計師很清楚自己在幹嘛 09/23 11:20
→ leiyan:vector<int> data(5,31) 09/23 11:36
推 singlovesong:stack本來就會照記憶體順序分配 不是剛好 09/23 16:13
→ singlovesong:如果sp 跳來跳去 反而很亂 所以james732 大是對的! 09/23 16:14
→ b9307025:我比較好奇的是int data[10] 不是從data[0]~data[9]嗎 09/23 16:24
→ b9307025:data[10]怎來的 = =" 09/23 16:25
→ james732:data[10]就是data+sizeof(data[0])*10 09/23 16:44