Diskuze: Začínání od 0
Tvůrce
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Je to hlavně kvůli tomu, že se pole indexují od 0.
Takhle, co vypadá jako přehlednější kód?
int pole[100];
for(int i=0; i<100; ++i)pole[i] = i;
for(int i=0; i<100; ++i)print(pole[i]);
nebo:
int pole[100];
for(int i=1; i<=100; ++i)pole[i-1] = i;
for(int i=1; i<=100; ++i)print(pole[i-1]);
A teď si ještě představ, že někde tu -1 zapomeneš...
A osobně mi taky přijde, že se s tím lépe počítá.
Aktuálně mě napadají výhody hlavně výkonnostní:
Je teda fakt, že když si definuješ třeba pole s možnými indexy od 1 do N, tak překladač se může snažit jej interně indexovat od nuly, ale nevím, zda-li dokáže odhalit všechny případy. Pořád asi bude muset někde odečítat jedničku. A tuhle práci mu můžeš v podstatě zadarmo ušetřit.
Např. v Pascalu/Delphi tě k tomu nikdo nenutí, pokud bereme v úvahu jazyky kompilované do nativního kódu.
V Matlabu třeba také ne (tam se čísluje obvykle od 1).
Jenom drobnost:
for(int i=0; i<100; ++i)pole[i] = i;
dává čísla menší o 1 než
for(int i=1; i<=100; ++i)pole[i-1] = i;
, ale to je drobnost, chápu co jsi tím chtěl říct.
Stejně se vždy budu řídit tím, co se mi bude v danou situaci znát nejpohodlnější.
Vrtule Martine díky za profi odpověď. Vlastně se tím ušetří jedno porovnávání. Až budu mít období "každej ušetřenej tick a bite je dobrej", tak to asi využiju
Zobrazeno 6 zpráv z 6.