问题说明:
c语言规定,不同类型的数据需要转换成同一类型后才能进行计算,在整型,实型喝字符型数据之间通过类型转换便可以进行混合运算。
当混合不同类型的变量进行计算时,便可能会发生类型转换。
相同类型的数据在转换时有规律可循,如字符必定先转换为整数,short型转化为INT型,float型数据在运算时一律转换为双精度double型,以提高运算精度。
不同类型的数据发生转换时,遵循低级类型向高级类型转换的原则,例如int型数据于double型数据进行运算时,是先将int型数据转换成double类型,然后再进行运算,结果为double类型。
此外,在一个赋值语句中,若发生类型转换,则是赋值语句右部(表达式一侧)的值转换成左部(目标一侧)的类型。
程序实例:
#include <stdio.h>
void main()
{
//定义变量并赋初值
int a = 5;
char c = 'a';
float f = 5.3;
double m = 12.65;
double result;
//同类型数据间进行运算并输出结果
printf("a + c = %d\n",a + c);
printf("a + c = %c\n",a + c);
printf("f + m = %f\n",f + m);
//不同类型数据间进行运算并输出结果
printf("a + m = %f\n",a + m);
printf("c + f = %f\n",c + f);
//将上述四个变量进行混合 运算,并输出结果
result = a + c * (f + m);
printf("double = %f\n",result);
}
程序说明:
程序中分别定义可一个整型数据a,一个字符型数据c,以及两个实型数据f和m。
当整型数据和字符型数据进行运算时,结果会随输出格式说明的不同而不同,当结果以整型输出格式"%d"输出时,结果为整数,若以字符型输出格式"%c"输出时,结果为字符。
当整型数据和双精度型数据进行运算时,c先将整型数据转换为双精度型数据,再进行运算,结果为双精度类型的数据。同样,当字符型数据和实型数据进行运算时,c先将字符型数据转换成实型数据,然后进行计算,结果为实型数据。
当表达式求解时,按运算符的优先级别的高低次序执行,例如先乘除后加减。若在一个运算对象两侧的运算符的优先级别相同,那么按照“自左向右”的方向进行结合,但若在表达式中存在括号,则括号中运算的优先级别最高,最先被执行。