zoukankan      html  css  js  c++  java
  • c语言不寻常的类型转换(类型提升)

    对于一下代码:

    printf("%d",sizeof('A'));

    你确定他打印的是1吗?

    运行之后发现结果是 4 !

    C语言 类型转换比一般人想像的还要多,在涉及小于int 和 double 的表达式中 , 都有可能出现类型转换!

    根据提升规则:它由char 转换成为 int 。这个特性叫做类型提升 !

    char  c1,c2;
    
    ...........
    
    c1=c1+c2;

     下表给出了常见的类型提升的列表:

    char -------------------------> int 

    枚举(enum) -------------------------> int 

    unsigned char-------------------------> int 

    short-------------------------> int 

    unsigned short -------------------------> int 

    位段(bit-filed)-------------------------> int 

    float -------------------------> double

    '整型提升',要求抽象机器把每个变量提升为int长度,然后对 两个 int 进行 加 运算,然后再对 结果进行裁剪。若两个char 的加法结果不会发生溢出异常,

    那么实际执行只需要产生char 类型的运算结果,可以省略类型提升!

    类似:

    在: 

    float f1,f2;
    
    double d;
    
    f1=f2*d;

    若编译器确定用float 进行运算的结果与转换成double 的一样,那么也可以使用float 进行乘法运算!

    隐士类型转换 是语言中的一种临机手段 ,起源于简化最初编辑器的想法。

  • 相关阅读:
    iOS开发之JSONKit
    iOS开发之XMPPFramework环境搭建和配置
    iOS开发之UICollectionViewController
    iOS开发之UITableViewController重写
    Object-c 开发之property
    Git使用
    解决CocoaPods下载慢的问题
    解决Linux下编译adb和fastboot问题
    解决fastboot刷机内存消耗问题
    sql
  • 原文地址:https://www.cnblogs.com/coversky/p/7327796.html
Copyright © 2011-2022 走看看