【发布时间】:2013-12-08 18:00:27
【问题描述】:
我似乎遇到了一个问题,当我访问超出数组范围的索引时,我的编译器没有正确地给我一个异常。
例如: 在我的代码中我有
int reds[8][8];
这应该创建一个高度为 8(0-7) 和宽度为 8(0-7) 的二维数组。 问题是,我以后有以下代码行:
reds[0][8] = 1;
reds[0][65] = 1;
我的代码编译良好,没有错误。但是,我的程序显然不能按我想要的方式工作。
if(reds[r][column] > 0){
if(column == 0) Red1_Write(0);
if(column == 1) Red2_Write(0);
if(column == 2) Red3_Write(0);
if(column == 3) Red4_Write(0);
if 语句在每次不应该出现的时候进入。将第 0 行第 1 到第 3 列的数组值设置为零。我做错了什么?
【问题讨论】:
-
是的,您对所使用的语言感到困惑。这是 C,不是 Java。
-
我认为 C 不会对数组进行边界检查。在大多数情况下,它会让你做你想做的事,并假设你知道自己在做什么……所以你当然应该知道自己在做什么……
-
“异常”?哪些例外?