各类数值类型之间的混合运算:
变量的类型是可以进行转换的,在之前的博客里面也写过,数据类型的转换有两种:一种是隐式转换(自动转换),另一种则是显式转换(强制转换 ),一般的数据运算都是系统自动进行隐式转换 。
隐式转换遵循以下规则:
- 数据类型不一样的时候,先转换成同一类,再进行运算。
- 转换按数据长度增加的方向进行,例如int型和long型进行运算,先将int型转换为long型再进行运算。
- 所有的浮点运算都以双精度进行运算,即便是只含float单精度的也要先转换成double型再进行运算。
- char型跟short型参与运算时,必须先转换成int型。(cpu通常是32位跟64位,但系统有的时候是32位,所以运行的时候还是按照32位的来。)
- 在进行赋值运算的时候,赋值号右边的数据类型会先转换成左边的数据类型再进行运算。如果右边的数据类型精度更高,那么会折损掉一部分的数据,降低精度,丢失的部分按四舍五入向前舍入。
下图是类型自动转换的规则示图:
接下来,来感受以下这方面的相关程序案列:
【5.1】
#include <stdio.h>
void main()
{
float PI = 3.14159;
int s,r = 5;
s = PI*r*r;
printf("s=