关于C语言数据类型转换的一个小问题,很简单哦!!

来源:百度知道 编辑:UC知道 时间:2024/05/27 16:07:17
char a; int b; float c; double d;
则表达式a*b+c-d值的类型是什么?

请解释一下原理啊,谢谢

数据类型转换有两种:
a 强制类型转换,通过函数实现, 如
char c='a'; int i; i=int(a); // 强制转换,但不会改变a本身的类型。
b 自动类型转换,通过编译器自动实现,
不同类型的数据在一个表达式中会自动转换为最长的类型:
如你定义的char a; int b; float c; double d;
计算a*b+c-d时, 按计算顺序说明类型转换:
1 a*b // char类型的a 转换为int类型的值, 再和int 类型的b 相乘
2 a*b+c // int 类型的a*b转换为float类型值,再和float类型的c相加
3 a*b+c-d // float类型的(a*b+c)转换为double类型的值,再和double类型的d相减
不考虑过程, 最终表达式的值为最长类型(这里是double)的值

double型的
因为C语言在混合运算时,变量类型都是有低向高转化的。
double>float>int>char。
所以当有double变量存在时,
运算结果为double

double 类型范围小的将转换到大的范围然后计算. 否则将出现计算错误