看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) UBUNTU下GCC 問題(Question): 程式運算時,依據使用者輸入情形的不同,需要載入不同大小的三維陣列。 因為我想不到其他方法,所以我先設一個三維指標 int ***OLS; 其中一種情形(A=3)是要把n3這個三維陣列掛進OLS 我用OLS = &n3; 然後問題在於 wht = OLS[ rmd%(A-1) *A*A + p * A + sta] + rmd * A ; A=3時,OLS裡面的數字只可能是0,1,2 rmd是迴圈變數,若是0沒問題,但是若超過1時 wht得出來的結果竟然會變成12,14,16之類的!(不論A是什麼都錯) 但是如果寫成兩行 wht = OLS[ rmd%(A-1) *A*A + p*A + sta] ; wht+= rmd*A; 就可以出現正確的結果wht=3,4,5 (A若是其他情形wht的值會正確) 這是怎麼回事?? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 14.100.134.188 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1421693334.A.C7D.html ※ 編輯: gary8520 (14.100.134.188), 01/20/2015 02:51:45 ※ 編輯: gary8520 (14.100.134.188), 01/20/2015 02:52:31
KAOKAOKAO: rmd%(A-1)的意義為何?一般來說%A不是比較對嗎 01/20 03:04
gary8520: 那個A-1只是剛剛好是這個數字,若之後要把A的範圍擴大 01/20 03:19
gary8520: 就要一個對照表了 01/20 03:20
gary8520: 那個三維陣列,不見得是個CUBE。 01/20 03:21
LPH66: 給段程式好了...不過我猜是硬把三維指標當一維用的關係 01/20 21:10
gary8520: codepad.org/uiU7IJIi 01/22 01:56
gary8520: 把原始關於這部份CODE貼上來了 01/22 01:57
yvb: 猜測平台為x86_64. 請檢查 sizeof(int) 和 sizeof(int *). 01/22 14:33