各类数值型数据间的混合运算
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各类数值型数据间的混合运算相关的知识,希望对你有一定的参考价值。
整型、实型、字符型数据间可以混合运算
1.自动转换
发生自动转换的情况:
-
运算转换------不同类型数据混合运算时
-
赋值转换------把一个值赋给与其类型不同的变量时
-
输出转换------输出时转换成指定的输出格式
-
函数调用转换------实参与形参类型不一致时转换
1.1.运算转换规则:
不同类型数据运算时先自动转换成同一类型
基本规则:
- 字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 。
- short型转换为int型(同属于整型) 。
- float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 。
具体规则如下图所示:
例如:
char ch;
int i;
float f;
double d;
在进行下面计算时候
ch/i+f*d-(i+f)
会内部准换成这样
最后得到一个double类型的结果。
同理下面例子也是一样
2.强制转换
一般形式:(类型名)(表达式)
例:
(int)(x+y) // 准换 x+y
(int)x+y // 只转换x
(double)(3/2)
(int)3.6
※※※ 说明 ※※※:强制转换得到所需类型的中间变量,原变量类型不变(也就是说强制准换之后不影响本身数据的类型,只是得到一个准换后的结果)。
2.1.例如
#include <stdio.h>
int main()
{
float x;
int i;
x = 3.6;
i = (int)x;
printf("x = %f, i = %d", x, i);
return 0;
}
结果输出
x = 3.600000, i = 3
另外,较高类型向较低类型转换时可能发生精度损失问题,上面例子也体现出来了。
以上是关于各类数值型数据间的混合运算的主要内容,如果未能解决你的问题,请参考以下文章