A mai Kérdések és válaszok munkamenetét a SuperUser - a Stack Exchange, a Q & A weboldalak közösség által irányított csoportosulásának részlegével - köszönheti.
A kérdés
SuperUser olvasó DragonLord kíváncsi arról, hogy a legtöbb operációs rendszer és a programozási nyelv számít nulláról. Ír:
Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.
What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?
Miért valóban? Amint olyan széles körben elterjedt, mint a gyakorlat, biztosan vannak gyakorlati okok annak végrehajtására.
A válasz
A SuperUser közreműködője, a Matteo a következő beismeréseket kínálja:
Counting arrays from 0 simplifies the computation of the memory address of each element.
If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as
element(n) = address + n * size_of_the_element
Ha az első elemet az elsőnek tekintjük, akkor a számítás lesz
element(n) = address + (n-1) * size_of_the_element
Nem hatalmas különbség, de szükségtelen kivonást ad minden egyes hozzáféréshez.
Szerkesztett hozzá:
- A tömbindex mint eltolás használata nem követelmény, hanem csak szokás. Az első elem eltolását a rendszer elrejtheti, és figyelembe vehető az elemek hozzárendelésekor és hivatkozásakor.
- A Dijkstra kiadott egy cikket: "Miért kell a számozás nulláról indulni" (pdf), ahol megmagyarázza, miért jobb választás a 0-tól? A nullától kiindulva a tartományok jobb ábrázolása lehetséges.
Ha mélyrehatóbb választ keres, akkor a Dijkstra-papír tájékoztató jellegű.
Van valami a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.