有人可以告诉我我做错了什么吗

时间:2020-08-15 03:14:29

标签: c++ visual-studio casting

一直在说

不能将类型'long'隐式转换为'int'。存在显式转换(您是否缺少演员表?)

int lVar10 = 0x7a69;
int uVar12 = lVar10 * 0x1a3 + 0x181d;
lVar10 = uVar12 + ((uVar12 & 0xffffffff) / 0x7262) * -0x7262;

3 个答案:

答案 0 :(得分:1)

简而言之,您要操作的数字大于可能的最大int值,特别是在行中

lVar10 = uVar12 + ((uVar12 & 0xffffffff) / 0x7262) * -0x7262;

以十进制表示的数字为2147483647 = 2 ^ 31-1。由于您使用六进制表示数字(前缀为0x),因此单独的0xffffffff已经大于最大整数。

因此,您可以通过声明lVar10和lVar12尽可能长的时间来解决此问题。

答案 1 :(得分:0)

您应该将变量强制转换为long。新增中 (长)应在第三行的=之后解决。

编辑:

此外,您可以首先声明变量lVar10和uVar12。

答案 2 :(得分:0)

您正在尝试将非整数存储到整数变量中。

名为lVar10的变量可以分配整数。例如,诸如-3-2-10123之类的值。