Bonjour,
Dans le descripteur de format "%ld", le l est pour long et d pour entier signé. Il est donc normal qu'une valeur négative - -1 en l'occurrence - soit affichée peu importe votre cast. Si vous voulez afficher un size_t sur la sortie standard, il vous faut utiliser le descripteur de format "%zu" [1].