C语言里数组下标加减问题

hBrush = CreateSolidBrush (crColor[iColor - IDC_BLACK])
crColor是多个颜色的数组
原来iColor 是一个1000-1008的数,而IDC_BLACK是1000固定。
由于种种原因,里面的iColor 变成了0,那么相减后crColor[?]

你让 crColor[i] 里的 i=0,1,2,3,4,5,6,7 就可以了。

if (iColor == 0) iColor = IDC_BLACK;
crColor[iColor - IDC_BLACK] 就是 crColor[0] 就不会错了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-01
iColor 变成了0,0-1000=-1000 这怎么行呢,程序会报错的

数组下标不能为负数追问

因为我是把静态局部变量写成了局部变量,这样对话框过程在进行初始化消息做了return之后对话框过程函数算结束了,那么再收到第一个对话框过程里的重画消息的时候我觉得那个变量应该就是重新初始化的一个变量,也就是0.所以推测应该是0-1000,程序只是警告我“ 使用了未初始化的局部变量”但是编译执行还是可以的,但运行后呢,颜色方面呢就是下标0的黑色,那么我怀疑0-1000程序把它读成0了~

追答

那你定义全局变量不就可以了吗?

追问

你没看出来我是古语把静态局部变量写成了局部变量,只是想看看我的原理思考思路是否正确。

追答

哎。。。你这问题问得???

追问

如果是只看书上,只能知其然。我只是想知其所以然。。。

第2个回答  2013-08-02
不能为负数,(iColor - IDC_BLACK)>0:iColor - IDC_BLACK):0,做下处理吧
相似回答