gpt4 book ai didi

c - 短类型变量自动扩展为整数类型?

转载 作者:行者123 更新时间:2023-12-01 16:09:20 25 4
gpt4 key购买 nike

我想打印 b[FFFC] 的值,如下所示,

short var = 0xFFFC;
printf("%d\n", b[var]);

但它实际上打印了 b[FFFF FFFC] 的值。

为什么会这样?

我的电脑运行的是 32 位架构的 Windows XP。

最佳答案

short 是有符号类型。你的实现是 16 位的。 0xFFFC 表示整数常量 65,532,但当转换为 16 位有符号值时,结果为 -4。

因此,您的代码行 short var = 0xFFFC; 将 var 设置为 -4(在您的实现中)。

0xFFFFFFFC 是 -4 的 32 位表示。所发生的一切是您的值正在从一种类型转换为更大的类型,以便将其用作数组索引。它保留其值,即 -4。

如果您确实想访问数组的第 65,533 个元素,那么您应该:

  • var 使用更大的类型。 int 在 32 位 Windows 上就足够了,但通常 size_t 是一个无符号类型,保证足够大以用于非负数组索引。
  • 使用 unsigned short,它只是为您提供了足够的空间用于此示例,但如果您想再向前推进 4 步,就会出错。

关于c - 短类型变量自动扩展为整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com