No me equivoqué.
tope empieza con el valor -1.
Pero cuando entra en el bucle, se incrementa en uno su valor, por lo que el primer valor que escribe es pila[0] y no pila[-1], por lo que no se genera un error, y si hacemos la comparación con 8 en ves de 9, entonces el último valor escrito es pila[8].
El problema original es que está escribiendo una posición más de lo que debería en el vector pila, por lo que la solución de Instru o la mía deberían funcionar bien. Aunque desde un punto de vista didáctico es mejor la de Instru ya que es mas fácil ver las iteraciones desde el 0 al 9, que del -1 al 8