Es cuestión de verlo de diferente manera xD
En una carrera ganaría el que está en la posición 0.
Todos empiezan en la posición 0. En una carrera siempre se avanza en cuanto a numero. Por ejemplo en una carrera de correr 500 metros, los participantes SIEMPRE avanzan. El hecho de que uno sea primero o segundo es una simple designación que le damos para diferenciarlo. Realmente, el primero es el que mas metros ha recorrido durante el menor tiempo posible. pero si lo plasmas en datos seria:
1ro - 500 m - 15s
2do - 500 m - 16s
3ro - 500 m - 18s
No tendría 2 manos, tendría 1 mano la otra sería la mano 0.
Cuando empiezas a contar, empiezas a contar desde cero y dices, 1 mano, 2 manos. Siempre tienes que avanzar desde algún punto. Lo mismo con los dedos, 1 dedo (ya has avanzado), 2 dedos (ya has avanzado dos veces) etc...
http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDFhttp://en.wikipedia.org/wiki/Zero-based_numberingLo de los bucles for tiene una buena explicación (esta en el enlace de la wikipedia).
Si yo hago un bucle for, y quiero que este saque 9 números hago un for:
for (i=0; i<9; i++){ print i; }
Me imprimirá 0,1,2,3,4,5,6,7,8 que son nueve números.
Pero que pasa si en vez de 0 empezamos por 1 ? 1,2,3,4,5,6,7,8 son 8 números.
Por tanto, tendría que hacer que el bucle empize en 1 y termine en 10 para imprimir 9 nuevos ·_·
Saludos