【发布时间】:2024-01-13 07:26:01
【问题描述】:
特别是我有一个大的无符号数和一个大的有符号负数。
Why can't I divide a large number by a negative number C++
当我尝试将两者相除时,我得到的结果为零仅仅是因为某处将我的有符号数转换为无符号数(意味着它必须是正数)。 >.>;
编辑。
只是为了绝对清楚。我知道它已解决为零,对此我很满意。我也很高兴之前的原因是它被解析为零,因为一个数字从有符号数字转换为无符号数字。
但是,这并不能解释为什么首先将数字从有符号数字转换为无符号数字。这样做似乎没有任何合乎逻辑的理由。
【问题讨论】:
-
这不是同一个问题吗?您的其他问题没有得到足够好的答案吗?
-
这不是同一个问题。我之前的问题是关于为什么数字为零。它没有,也没有一个答案回答了他们为什么被转换的问题,只是他们被转换了。
-
很好:它们被转换是因为标准要求它。
-
它已被转换,因为它与一个部门中相同类型的
unsigned版本一起使用。它只是通常算术转换的一部分: 否则,如果具有无符号整数类型的操作数的等级大于或等于另一个操作数类型的等级,则具有带符号整数类型的操作数应转换为无符号整数类型的操作数的类型。 -
@chris aka 手册是这么说的。没有给出理由,但就是这样。嗯。谢谢
标签: c++ unsigned-long-long-int