问题说明:

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先将字符型数据转换成实型数据,然后进行计算,结果为实型数据。

当表达式求解时,按运算符的优先级别的高低次序执行,例如先乘除后加减。若在一个运算对象两侧的运算符的优先级别相同,那么按照“自左向右”的方向进行结合,但若在表达式中存在括号,则括号中运算的优先级别最高,最先被执行。