文章目录
@[toc]概要发生转换的情形隐式类型转化规则
概要
类型转换,分为隐式类型转换和显示类型转化。这里主要讨论含无符号性的隐式类型转化。
发生转换的情形
赋值操作 示例: unsigned char c = -1; // c的结果是255。
算术表达式 算术表达式中,含有整型与无符号型,int性会自动转化为无符号型。 示例:
unsigned u = 10;
int i = -42;
cout << u + i <<endl; // int 为32 位,输出为4294967264
隐式类型转化规则
以下用实例来说明各种情况转化的规则。
unsigned与int算术运算 int型,正数且不越界,则直接赋值;如果为负数,则负数值加无符号型的模 示例:
unsigned u = 10;
int i = -42;
u = i;
cout << u<<endl; // 输出4294967254
unsigned val1与unsigned val2相减
如果两者相加,则进行正常的溢出检出 如果两者相减,规则如下:
val1 > val2 正常,不涉及到数值异常变化。val1 < val2 分析:相减,得到负值,相当于得到负数int型,则负数值加无符号型的模unsigned u = 10;
int i = -42;
u = i;
cout << u<<endl; // 输出4294967254