You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何同逻辑C++代码中unsigned int/short与signed运算结果不同?

关于有符号与无符号short/int混合运算的结果疑问

先看第一段代码:

#include <iostream>
int main()
{
    unsigned int x{ 2 };
    int y{-3};
    std::cout<<x+y;

    return 0;
}

这段代码的输出结果是4294967295。

再看第二段代码,仅将int替换为short:

#include <iostream>
int main()
{
    unsigned short x{ 2 };
    short y{-3};
    std::cout<<x+y;

    return 0;
}

这段代码的输出结果变成了**-1**。

按我之前的认知,有符号与无符号整数运算应产生无符号结果,所以两种情况的输出都应该是4294967295才对,但short版本的结果却不一样,我实在搞不懂原因,有没有人能解释下问题出在哪?

编辑:这不是其他问题的重复,请不要再标记重复!麻烦有人取消标记!

我已经看过关于混合有符号和无符号类型运算的相关内容,有帮助但没解决我的问题。

我重新发布此问题是因为首次提问时被误标为重复,因此请勿再标记重复

内容的提问来源于stack exchange,提问作者mr_nobody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:52:16