头图

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
注意说明:
●表达式应该用括号括起来。
●进行强制类型转换时,得到的是一个所需类型的中间变量,原来变量的类型并未发生改变


菜鸟明轩
1 声望0 粉丝

C/C++ 领域资深者