C++无符号整数和有符号整数之间进行转换
C++ converting between unsigned integers and signed integers
为什么下面的代码先写 B2,然后写 A1?它不应该同时写A1吗?C++ 中的隐式数据类型从有符号 int 转换为无符号 int(层次结构中较高(
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
将负符号整数类型转换为unsigned
总是下溢,并产生模算术。 unsigned int x = (unsigned int)-1
商店UINT_MAX
成x
。
例:
unsigned int x = (unsigned int) -1;
std::cout << x << std::endl;
x = (unsigned int) -5;
std::cout << x << std::endl;
输出:
4294967295
4294967291
请注意,-1
和 -5
都已转换为极高的值,其差值也等于 4。
对于给定的代码
short a=-5;
unsigned short b=-5u;
if(a==b)
printf("A1");
else
printf("B2");
对于 sizeof(short)
<sizeof(int)
int
=" int
=" _x0032_=" k=" _x002D_=" _x0035_=">k 是unsigned short
中值表示位数。
因此,int
它们是不同的,即使它们可能是相同的short
大小的位模式。
相关文章:
- 在 Rcpp 中的字符串类型之间转换时出错
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- 在不同类型之间转换常量指针
- 在 3D 骨架系统 DirectX 之间转换
- C++ 如何将用户控件添加到窗体,以便我可以在面板之间转换
- 在 std::u8string 和 std::string 之间转换
- 如何在Unicode/UCS CodePoint和UTF16替代对之间转换
- 在DXGI格式之间转换RGBA数据
- 在两个不动点表达之间转换
- 在函数指针类型之间转换
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 如何在C 中的不同类之间转换
- 一个关于C++中double和int之间转换的奇怪结果
- 模板类在模板类型之间转换,但也专门化
- 是否有Visual c++编译器在线,以及如何在c++和vs简单代码之间转换
- c/在Unix时间和"Gregorian time"之间转换
- 无法使用iconv在编码之间转换
- 在std::string和std::wstring之间转换的多平台方式
- 我真的应该每次在基元类型之间转换时都使用static_cast吗
- 使用Boost::units在两个量之间转换的最简单方法