gpt4 book ai didi

c++ - 类型转换的 signed int 像 unsigned int 一样转换

转载 作者:行者123 更新时间:2023-11-30 01:19:48 24 4
gpt4 key购买 nike

我有一个输出值的程序,称它为x,它可以是任何数字类型。当我将 x 类型转换为 (int)x 时,对于正数它工作正常,但对于负数它似乎被视为无符号。 (做模 INT_MAX +1)。

我将它用作数组索引,突然我收到许多“超出范围”的错误,所以我插入了一些 printfs 并将 x 设为整数,然后我将其作为输出:

Before: 44  After: 44
Before: -60 After: 4294967236
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted (core dumped)

使用命令:

std::cout << "Before: " << 2*total_sites + energy_base << "\tAfter: " << 2*total_sites + (int)energy_base << std::endl;

其中 energy_base 是我在示例中使用的“x”。

energy_base 本身被定义为 double ,但它是从一个函数生成的(对于本示例),我将其限制为“整数”值。对于上下文,total_sites 一个无符号整数。

我哪里错了?

最佳答案

在无符号 + 有符号中,无符号获胜。 (int) energy_base 转换为 unsigned int 以与 2*total_sites 相加。

关于c++ - 类型转换的 signed int 像 unsigned int 一样转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393427/

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