1000L est équivalent à un (long)1000
Le type d'une constante est défini par le contexte. Mais ce n'est pas toujours suffisant. Quand la valeur est inférieure à 32767 le compilateur ne peut pas savoir si c'est un int ou un long donc il faut le lui dire explicitement.
Si tu écris 1000 le compilateur le considère comme un entier.
Si tu écris 1000.0 il le considère comme un float.
Si tu écris 1000L il le considère comme un long