尽管C语言的数组会让新手感到麻烦,然而C语言中数组的这种特别的设计正是其最大优势所在。要理解这一点,以下是一些简单解释。
在所有常见的程序设计错误中,最难于察觉的一类是“栏杆错误”,也常被称为“差一错误”(off-by-one error)。例如这个问题:100英尺长的围栏每隔10英尺需要一根支撑用的栏杆,一共需要多少根栏杆呢?如果不加思索,大家会容易以为是100除以10,即为10根。其实,真正需要的是11根。
因为支撑10英尺长的围栏实际需要2根栏杆,即两端各一根。这个问题的另一种思考方式是,除了最右侧的一段围栏,其他每一段10英尺长的围栏都只在左侧有一根栏杆;而例外的最右侧一段围栏不仅左侧有一根栏杆,右侧也有一根栏杆。
为了避免以上问题中所说的“栏杆错误”,以下是两个注意的通用原则:
(1)首先考虑最简单情况下的特例,然后将得到的结果外推;
(2)仔细计算边界,绝不掉以轻心;
将上面这两点牢记住以后,现在看看整数范围的计算。例如,假定整数x满足边界条件x>=16且x<=