【问题标题】:C - Exception when using _int16 [duplicate]C-使用_int16时出现异常[重复]
【发布时间】:2012-10-07 20:11:05
【问题描述】:

可能重复:
Correct way to use scanf / printf (and family) with fixed size types?

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

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

【问题讨论】:

  • 您对scanf 的使用假定一个全字整数而不是16 位整数。尝试"%hd" 作为manual 的模式
  • 谢谢 :) 请问我应该用什么代替?我对 C 有点陌生。
  • 阅读 scanf 手册页,查找“short int”。
  • 1) main() 应该返回 int 2) _int16 是什么(保留带有前导下划线的标识符) 3) 如果 _int16 是 16 位类型,则使用“%hd”格式。 4)您正在使用 printf() 而不是 #include
  • @Kiril 跨平台,您将使用 int16_tSCNd16 from inttypes.h

标签: c exception stack int addition


【解决方案1】:

正如 cmets 中指出的,解决方案是替换

scanf("%d", &a);

scanf("%hd", &a);

【讨论】:

  • 这只有在_int16short 大小相同时才有效,但它们不必是相同大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2018-08-05
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多