C – 使用_int16时的exception

可能重复:
正确使用具有固定大小类型的scanf / printf(和系列)的方法?

我在Visual Studio中编写了以下程序:

在运行程序并退出时,我收到错误消息“堆栈变量b已损坏”。 如果我用int替换_int 16,则不会引发exception。 我该怎么解决这个问题呢? 我必须使用_int16,因为我想模拟整数溢出。 谢谢 :)

正如评论中指出的那样,解决方案是更换

 scanf("%d", &a); 

 scanf("%hd", &a);