为什么很多编程语言要把0设置为第一个元素下标索引?
做为一个三十多年用C,C++编程的人,第一次碰见有人问这问题。
的确是这样,不论是数组、字符串,还是指针,无一例外要从0开始访问。
char ch_array[4096];
for(int i=0;i<4096;i++)
ch_array[i]=30;
如果写成for(i=1;i<=4096;i++)ch_array[i]=30;
不仅错误,而且难看。
我想之所以从0开始,有几方面原因:
1,零是一个里程碑。
在高等数学中,老师会强调0的意义。如数列,必须给第0项f(X0)的值,有了f(X0)的基础,其它才顺理成章。
2,在编程中,约定俗成,从0开始。
软件开发人员互相交流,都是以0为基础。如要查第6名的成绩,自然是打印score[5]的值,而不是score[6]。否则交流会很累。
当然,显示输出时,肯定会显示”第6名成绩”是多少:
printf(“第%d名成绩是%d分”,num+1,score[num]);
3,我觉得,从0开始,与西方人的习惯有关。
西方人住别墅的多,别墅的地面那一层,为车库,所以叫GROUND层,而习惯上把第二层才叫1st floor。
我们国家直接把地面这层就叫第一层。
西方人习惯上的这种认知,自然带到了编程上。谁让早先的编程软件都是人家发明的呢!
for(int i=0;i<4;i++)
printf(”电梯到第%d层了!”,i);
一目了然。
以上是我的一点看法。编程软件已经有半个世纪的历程了,确切的答案,只能等西方国家的一些保密文件解密后才会有最正确的答案。但有一点,这些先贤们的想法真的很一致,那就是,万事从0开始,有0才会有1,才会有无穷。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有