Source: https://public.iutenligne.net/informatique/langages/maillefert/LangageC/cours/chapitre_07.pdf