小编Zoi*_*erg的帖子

C++ 无符号和有符号转换

我以前见过这种问题,但提供的答案并没有让我明白一切。发布此问题时,通常会附上下一个示例:

#include <iostream>

int main()
{
    unsigned int u = 10;
             int i = -42;

    std::cout << i + i << std::endl;
    std::cout << i + u << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

-84
4294967264
Run Code Online (Sandbox Code Playgroud)

所有按预期工作 int 转换为无符号。但是,如果 的绝对值i小于 ,u则似乎没有发生这种转换。

#include <iostream>

int main()
{
    unsigned int u = 10;
             int i = -3;

    std::cout << i + i << std::endl;
    std::cout << i + u << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

-6
7
Run Code Online (Sandbox Code Playgroud)

我没有看到任何提到它的答案,也找不到任何解释。尽管这似乎是合乎逻辑的事情发生,但我对此没有任何解释。

c++ unsigned-integer

6
推荐指数
2
解决办法
150
查看次数

标签 统计

c++ ×1

unsigned-integer ×1