将无符号整数减去有符号长结果。从不消极?

问题描述 投票:0回答:1

在我的代码中发现一个错误,并在减去 2 个数字时注意到以下内容

无符号整型 a, b(b > a)

有符号长结果 = a - b

即使 b 更大,结果始终为正。我预计由于结果已签名,因此结果也会转换为签名,但显然不是。我该如何解决这个问题?

c++ math subtraction integer-arithmetic
1个回答
0
投票

问题是,在将值转换为 long 之前,您的数学运算正在发生 - 使用

unsigned int
,产生
unsigned int
。当无符号整型转换为更大的有符号类型时,该值不会改变。

在进行数学计算之前,尝试将至少一个值转换为

long

© www.soinside.com 2019 - 2024. All rights reserved.