c++中的隐式类型转换

    xiaoxiao2025-04-26  18

    文章目录

    @[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
    最新回复(0)