为何同逻辑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
相关产品推荐
相关产品推荐

