Pourquoi les compilateurs C optimisent le commutateur et si différemment

Je travaillais sur un projet personnel récemment lorsque je suis tombé sur un problème étrange. Dans une boucle très serrée, j'ai un entier avec une valeur comprise entre 0 et 15. J'ai besoin d'obtenir -1 pour les valeurs 0, 1, 8 et 9 et 1 pour les valeurs 4, 5, 12 et 13. Je me suis tourné vers...