首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无符号整数与有符号整数之间的C++转换

无符号整数与有符号整数之间的C++转换
EN

Stack Overflow用户
提问于 2013-02-18 01:23:56
回答 1查看 325关注 0票数 0

为什么下面这段代码先写B2,然后写A1?它不应该同时编写两个A1吗?C++中的隐式数据类型从有符号整型转换为无符号整型(在层次结构中更高)

代码语言:javascript
复制
short a=-5;
unsigned short b=-5u;
if(a==b)
    printf("A1");
else
    printf("B2");
// prints B2

int a2=-5;
unsigned int b2=-5u;
if(a2==b2)
    printf("A1");
else
    printf("B2");
return 0;

// prints A1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-18 01:34:52

将负有符号整数类型转换为unsigned总是下溢,并产生模运算。unsigned int x = (unsigned int)-1UINT_MAX存储到x中。

Example

代码语言:javascript
复制
unsigned int x = (unsigned int) -1;
std::cout << x << std::endl;
x = (unsigned int) -5;
std::cout << x << std::endl;

输出:

代码语言:javascript
复制
4294967295
4294967291

请注意,-1-5都已转换为极高的值,其差值也等于4。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14923825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档