常见的数据类型转换

150 阅读2分钟

1、什么叫做自动类型转换?

规则:

(1)若参与运算量的类型不同,则先转换成同 类型,然后进行运算。

(2)转换按数据长度增加的方向进行,以保证精度不降低。如int 型和lbng 型运算时, 先把int量转成long型后再进行运算。

(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要 先转换成double 型,再作运算。

(4)char型和short型参与运算时,必须先转换换成int型。

举个栗子

假设已指定i为整型变量,f为float型变量,d为double型变量,e为long型变量,表达式为:10+'a'4i*f-d/e,则表达式的运行次序?

运行顺序: 第一步运行: i*f

第二步运行: d/e

第三步运行: 10+’a’

第四步运行: 10+’a’+i*f

第五步运行: 10+’a’+i*f–d/e

语句编写:

#include<stdio.h>
int main()
{    
    int i=2;
    float f=1.5;
    double d=4.0;
    long e=2;
    printf("i*f=%f,i转化为float类型参与运算",i*f);
    printf("d/e=%lf,e转化为double类型参与运算",d/e);
    printf("10+'a'=%d,'a'转化为int类型参与运算",10+'a');
    printf("10+'a'+i*f=%f,int转化为float类型",10+'a'+i*f);
    printf("10+'a'+i*f-d/e=%lf.float转化为double类型",10+'a'+i*f-d/e);
    return 0;
}

运行结果:

微信图片_20230127182229.jpg 2、强制类型转换如何使用?

一般形式 (类型说明符)(表达式)

举个栗子:

(double)a 将变量a强制转换为double类型

(int)(x+y) 将x+y的值强制转换为int类型

(float)(5%3)将5%3的值强制转换为float类型

(float) x/y 将x强制转换成float类型后,在参与运算

语句编写:

#include<stdio.h>

int main()
{   
    float f;
    f=9.8;
    printf("(int)f=%d,f=%f\n",(int)f,f);
    return 0;
}

运行结果:

微信图片_20230127182456.jpg 注意说明:

●表达式应该用括号括起来。

●进行强制类型转换时,得到的是一个所需类型的中间变量,原来变量的类型并未发生改变