我很惊讶地知道我无法通过强制转换将有符号整数转换为无符号整数!
int i = -62;
unsigned int j = (unsigned int)i;
我以为自从我开始使用演员表以来我就已经知道这一点,但我做不到!
原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议
我很惊讶地知道我无法通过强制转换将有符号整数转换为无符号整数!
int i = -62;
unsigned int j = (unsigned int)i;
我以为自从我开始使用演员表以来我就已经知道这一点,但我做不到!
原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议
我=-62。如果要将其转换为无符号表示。对于 32 位整数,它将是 4294967234。一个简单的方法是
num=-62
unsigned int n;
n = num
cout<<n;
4294967234
原文由 Himanshuman 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
您可以将
int
转换为unsigned int
。转换有效且定义明确。由于该值为负数,因此将
UINT_MAX + 1
添加到其中,以便该值是有效的无符号数量。 (从技术上讲,它添加了 2 N ,其中 N 是用于表示无符号类型的位数。)在这种情况下,由于您平台上的
int
的宽度为 32 位,因此从 2 32中减去 62,得到 4,294,967,234。