C – Exception lors de l’utilisation de _int16

Dupliquer possible:
Comment utiliser correctement scanf / printf (et sa famille) avec des types de taille fixe?

J’ai écrit le programme suivant dans Visual Studio:

En exécutant le programme et en le quittant, le message d’erreur suivant s’affiche “La stack autour de la variable b était corrompue”. Si je remplace _int 16 par int, aucune exception n’est déclenchée. Comment puis-je résoudre ce problème s’il vous plaît? Je dois utiliser _int16 car je veux simuler un dépassement d’entier. Merci 🙂

Comme indiqué dans les commentaires, la solution consiste à remplacer

 scanf("%d", &a); 

avec

 scanf("%hd", &a);