数据有不同的类型,不同类型数据之间进行混合运算时涉及到类型的转换问题。

    • 转换的方法有两种:
      • 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成
      • 强制类型转换:把表达式的运算结果强制转换成所需的数据类型
        • 语法格式: (类型)变量或常量
    • 类型转换的原则:
      • 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

    image.png

    1. #include <stdio.h>
    2. int main() {
    3. // 隐式转换(自动转换):编译器自动转换
    4. int a = 11;
    5. double b = a; //将a的值,11,转换为11.0000,再给b赋值
    6. printf("b = %lf\n", b);
    7. printf("a = %d\n", a);
    8. // 强制类型转换,用户转换, (类型)变量或常量
    9. int m = 3;
    10. int n = 2;
    11. b = (double)m/n;
    12. printf("b = %lf\n", b);
    13. b = (double)3/2;
    14. printf("b = %lf\n", b);
    15. // 类型转换原则:数据类型小的往数据类型大的转
    16. int c = 100;
    17. char d = (char)c; //没有问题
    18. printf("d = %d\n", d);
    19. // 大的往小的转,数据可能会丢失
    20. c = 129;
    21. d = (char)c;
    22. printf("d = %d\n", d);
    23. // 小的往大的转
    24. long long big = (int)c;
    25. printf("big = %lld\n", big);
    26. return 0;
    27. }

    运行结果:

    1. b = 11.000000
    2. a = 11
    3. b = 1.500000
    4. b = 1.500000
    5. d = 100
    6. d = -127
    7. big = 129