gpt4 book ai didi

c++ - 为什么有符号负数转换为无符号数?

转载 作者:行者123 更新时间:2023-11-28 02:56:40 26 4
gpt4 key购买 nike

特别是我有一个大的无符号数和一个大的有符号负数。

Why can't I divide a large number by a negative number C++

当我尝试将两者相除时,我得到的结果仅为零,因为某处某处正在将我的有符号数转换为无符号数(这意味着它必须为正数)。 >.>;

编辑。

只是为了绝对清楚。我知道它已解决为零,对此我很满意。我也对之前将其解析为零的原因感到满意,因为数字从有符号数转换为无符号数。

然而,这并没有回答为什么数字首先从有符号数转换为无符号数。这样做似乎没有任何合乎逻辑的理由。

最佳答案

算术运算符的操作数需要具有相同的类型。这使得该语言更易于定义和实现,部分原因是要处理的情况较少,部分原因是硬件通常也不支持混合类型操作。形式上,C++ 是根据虚拟机定义的,但该机器的预期功能受现实世界硬件的影响。标准规定但硬件不支持的操作(例如您假设的有符号-无符号除法)将需要由编译器编写者在库代码中实现,这会影响性能。

有符号操作数需要转换为无符号操作数,反之亦然。标准委员会选择了前者。

关于c++ - 为什么有符号负数转换为无符号数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21807614/

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