[問題] 三重指標取值後再做加法出現奇怪現象

看板C_and_CPP (C/C++)作者 (元丁)時間11年前 (2015/01/20 02:48), 11年前編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/1
開發平台(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

01/20 03:04, , 1F
rmd%(A-1)的意義為何?一般來說%A不是比較對嗎
01/20 03:04, 1F

01/20 03:19, , 2F
那個A-1只是剛剛好是這個數字,若之後要把A的範圍擴大
01/20 03:19, 2F

01/20 03:20, , 3F
就要一個對照表了
01/20 03:20, 3F

01/20 03:21, , 4F
那個三維陣列,不見得是個CUBE。
01/20 03:21, 4F

01/20 21:10, , 5F
給段程式好了...不過我猜是硬把三維指標當一維用的關係
01/20 21:10, 5F

01/22 01:56, , 6F
codepad.org/uiU7IJIi
01/22 01:56, 6F

01/22 01:57, , 7F
把原始關於這部份CODE貼上來了
01/22 01:57, 7F

01/22 14:33, , 8F
猜測平台為x86_64. 請檢查 sizeof(int) 和 sizeof(int *).
01/22 14:33, 8F
文章代碼(AID): #1KlL6Mnz (C_and_CPP)
文章代碼(AID): #1KlL6Mnz (C_and_CPP)