[问题] 三重指标取值后再做加法出现奇怪现象

楼主: gary8520 (元丁)   2015-01-20 02:48:50
开发平台(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的值会正确)
这是怎么回事??
作者: KAOKAOKAO (鬼斗)   2015-01-20 03:04:00
rmd%(A-1)的意义为何?一般来说%A不是比较对吗
楼主: gary8520 (元丁)   2015-01-20 03:19:00
那个A-1只是刚刚好是这个数字,若之后要把A的范围扩大就要一个对照表了那个三维阵列,不见得是个CUBE。
作者: LPH66 (-6.2598534e+18f)   2015-01-20 21:10:00
给段程式好了...不过我猜是硬把三维指标当一维用的关系
楼主: gary8520 (元丁)   2015-01-22 01:56:00
codepad.org/uiU7IJIi把原始关于这部份CODE贴上来了
作者: yvb   2015-01-22 14:33:00
猜测平台为x86_64. 请检查 sizeof(int) 和 sizeof(int *).

Links booklink

Contact Us: admin [ a t ] ucptt.com