為什么很多編程語言要把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,才會有無窮。