作者SmallBeeWayn (喵喵叫的蜜蜂貓)
看板Programming
標題Re: [問題] 關於陣列從0或1開始算起的好處
時間Fri Aug 20 05:35:56 2010
我覺得首要的還是以這程式語言的使用環境要求
例如在一些低階(要求速度的組合語言、一般的單晶片開發)環境
陣列從0起算是很正常的,因為不這樣的話會白白增加程式碼長度
另外,GOTO自然是用得更兇了,反正編譯之後都是一堆JMP
只要加上適當的旗標,GOTO沒那麼難搞
但是到了大型(數千數萬行)的專案(程式設計師合作)開發的時候
程式碼最重要的是可讀性可流通性那些
GOTO不是不能用,但就僅限於特殊要求程式碼效率的小Function
至於陣列該怎麼起算? 好用,程式碼能夠乾淨簡潔才是最重要的
: : http://www.iis.sinica.edu.tw/~scm/ncs/2009/07/go-to-considered-harmful/
: : 上面這個連結雖然是討論GOTO
: : 不過Dijkstra大師在裡面說
: : 『我以為到了現在,一個專業程式員該有高一點的自我要求了,陣列應該從0算起,
: : 我以為到了現在,一個專業程式員該知道自然數從 0 開始的好處了』
: : 但是我在看Core Java的時候作者又說了
: : 『Java counts the code units in strings in a peculiar fashion:
: : the first code unit in a string has position 0.
: : This convention originated in C,
: : where there was a technical reason for counting positions starting at 0.
: : That reason has long gone away and only the nuisance remains.
: : However, so many programmers are used to this convention that
: : the Java designers decided to keep it.』
: : 如果可以拋開歷史因素之類相容問題的話
: : 那麼陣列索引到底是從0開始計算好,還是從1開始計算好呢?
在VB6中如果你宣告一個 Array(10)
指的是Array(0~10)都可以用,共有十一個空位,你可以從0算到9或是1算到10都可以
原因很單純的就是不差那一點記憶體空間(VB.Net我不確定)
在Fortran中如果宣告Array(10), 可用空間則是1~10
在C、JAVA的話,則都是0~9
--
填充題: ______なのはいけないと思います!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.180.163
推 aecho:答案是 リリカル 嗎.... 114.43.194.2 08/20 06:20
→ horngsh:樓上是用BIG5的日文嗎?112.104.191.119 08/20 09:15
推 milonga332:瞭解了..多蝦 123.50.39.188 08/20 11:40
→ MOONRAKER:VB.NET也改成C-Style了。所以.NET下寫125.227.222.205 08/20 12:10
→ MOONRAKER:啥語言都是換個皮而已,頗無聊。125.227.222.205 08/20 12:11
推 loveme00835:這樣也就表示溝通上比較方便了說@@140.121.197.115 08/20 12:17
→ MOONRAKER:這倒是啦…其實我真正不爽的是MS同時把125.227.222.205 08/20 16:52
→ MOONRAKER:很多C的特色加入VB.NET中,例如+=, -=125.227.222.205 08/20 16:52
→ MOONRAKER:這些組合運算子,搞得兩邊沒啥差異性 :<125.227.222.205 08/20 17:00
推 aecho:是日文,用Nally的編輯貼上的 114.43.194.2 08/21 14:35
→ aecho:還不會用這台打日文,所以就複製貼上~~ 114.43.194.2 08/21 14:35