Source: https://members.loria.fr/JFMari/files/Cours/exercices-C.pdf