隐式类型转换

来源:互联网 发布:防晒面料 知乎 编辑:程序博客网 时间:2024/05/18 03:06

转换的规则

  1. 若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。

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

  3. char型和short型参与运算时,必须先转换成int型。

  4. 在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

转换规则如图:

这里写图片描述

#include<stdio.h>int main(){    float PI=3.14159;    int s1, r=5;    double s2;    s1 = r*r*PI;    s2 = r*r*PI;    printf("s1=%d, s2=%f\n", s1, s2);    return 0;}运行结果:s1=78, s2=78.539753

在计算表达式rrPI时,r 和 PI 都转换成double类型,表达式的结果也为double类型。但由于 s1 为整型,所以赋值运算的结果仍为整型,舍去了小数部分。

需要注意的

  1. 赋值运算时(doubleint)是将小数部分直接丢掉,而不是按照四舍五入向前舍入。
  2. 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

参考【博文】

0 0