Skip to content

类型转换

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

转换的方法有两种:

  • 自动类型转换(隐式转换):遵循一定的规则,由编译系统自动完成
  • 强制类型转换(显示转换):把表达式的运算结果强制转换成所需的数据类型
    • 语法格式: (类型) 变量或常量

类型转换的原则:

占用内存字节数少 (值域小) 的类型,向占用内存字节数多 (值域大) 的类型转换,以保证精度不降低、数据不溢出。

c
#include <stdio.h>

int main() {
    // 隐式转换(自动转换):编译器自动转换
    int a = 11;
    double b = a; // 将 a 的值 11 转换为 11.0000,再给 b 赋值
    printf("b = %lf\n", b);
    printf("a = %d\n", a);

    // 强制类型转换,用户转换, (类型) 变量或常量
    int m = 3;
    int n = 2;
    b = (double) m / n;
    printf("b = %lf\n", b);

    b = (double) 3 / 2;
    printf("b = %lf\n", b);

    // 类型转换原则:数据类型小的往数据类型大的转
    int c = 100;
    char d = (char) c; // 没有问题
    printf("d = %d\n", d);

    // 大的往小的转,数据可能会丢失
    c = 129;
    d = (char) c;
    printf("d = %d\n", d);

    // 小的往大的转
    long long big = (int) c;
    printf("big = %lld\n", big);

    return 0;
}

运行结果:

b = 11.000000
a = 11
b = 1.500000
b = 1.500000
d = 100
d = -127
big = 129