表达式求值,隐式类型转换,整型提升,算数(类型)转换

    表达式求值


        表达式的求值顺序一部分由操作符的优先级和结和性决定
        同样,有些表达式的操作数在求值过程中可能需要转化为其他类型

    隐式类型转换


        整形提升:
        c的整形算数运算至少以缺少(默认)整形类型的精度来进行的
        为了获得这个精度,表达式中的字符或短整型操作数在使用之前被传化为普通整形,这种转换称为整形提升
        整形提升的意义:
        表达式的整形运算要在CPU的相应运算器件内运行,CPU内整形运算器(ALU)的操作数的字节长度一般就是int类型字节的长度,
        同时也是CPU通用寄存器的长度
        **因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整形操作数的标准长度
        通用CPU是难以实现两个8bit字节的直接相加运算(虽然机器指令中可能有这种字节相加指令),所以
        表达式中各种长度小于int长度的整形值,都必须先转换成int或unsigned int,然后才能送入CPU去执行运算。

如何进行整形提升:


        整型提升是按照变量的数据类型的符号位来提升的
        1.负数
            char c = -1; //-1默认为int型
                                       11111111 //-1在内存中以补码的形式存储
            11111111 11111111 11111111 11111111 //整型提升补符号位 1
                                       11111111 //最终c里面放入的数据,因为c只能放进去8个bit位
            11111111 11111111 11111111 11111111 //整形提升按照符号位来进行
        2.正数
            char c = 1;
                                       00000001
            00000000 00000000 00000000 00000001 //补符号位0
                                       00000001 //最终c里面放入的数据,因为c只能放进去8个bit位
        3.无符号整形-->将其看做正数

    算数转换(当类型>=int时):

向上转换,会向最大的那个类型转换
        long double
        double
        float
        unsigned long int 
        long int
        unsigned int
        int

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值