Perchè devi prendere almeno un valore della lista(conviene prendere il primo perchè poi si confrontano spostandoci nell'array con un ciclo for), che verrà poi confrontato con tutti gli altri. Altrimenti se ci ragioni capisci che non potrebbe funzionare, infatti confronteresti ad ogni elemento dell'array il valore 0 che sarà sempre più piccolo. Una variante potrebbe essere definire la variabile max come double e inizializzare il suo valore con 2^32 + 1, in questo modo non ci sarebbe "mai" nessun intero maggiore.
P.S. Come fai a non capire una cosa che hai sviluppato te stesso? Se parli così sembra che non l'hai sviluppato ma copiato quel codice.