int 到 unsigned int 的转换

新手上路,请多包涵

我很惊讶地知道我无法通过强制转换将有符号整数转换为无符号整数!

 int i = -62;
unsigned int j = (unsigned int)i;

我以为自从我开始使用演员表以来我就已经知道这一点,但我做不到!

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以将 int 转换为 unsigned int 。转换有效且定义明确。

由于该值为负数,因此将 UINT_MAX + 1 添加到其中,以便该值是有效的无符号数量。 (从技术上讲,它添加了 2 N ,其中 N 是用于表示无符号类型的位数。)

在这种情况下,由于您平台上的 int 的宽度为 32 位,因此从 2 32中减去 62,得到 4,294,967,234。

原文由 James McNellis 发布,翻译遵循 CC BY-SA 2.5 许可协议

我=-62。如果要将其转换为无符号表示。对于 32 位整数,它将是 4294967234。一个简单的方法是

num=-62
unsigned int n;
n = num
cout<<n;

4294967234

原文由 Himanshuman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题