各类数值型数据间的混合运算

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各类数值型数据间的混合运算相关的知识,希望对你有一定的参考价值。

整型、实型、字符型数据间可以混合运算

1.自动转换

发生自动转换的情况:

  • 运算转换------不同类型数据混合运算时

  • 赋值转换------把一个值赋给与其类型不同的变量时

  • 输出转换------输出时转换成指定的输出格式

  • 函数调用转换------实参与形参类型不一致时转换

1.1.运算转换规则:

不同类型数据运算时先自动转换成同一类型

基本规则:

  1. 字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 。
  2. short型转换为int型(同属于整型) 。
  3. 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

另外,较高类型向较低类型转换时可能发生精度损失问题,上面例子也体现出来了。

以上是关于各类数值型数据间的混合运算的主要内容,如果未能解决你的问题,请参考以下文章

C/C++中各类数值型数据间的混合运算法则

各类数值型数据之间的混合运算

C语言各类数据类型间的混合运算

c语言 不同数据类型间的混合运算

c语言 不同数据类型间的混合运算

C语言中的任何类型数据都可进行四则运算吗?为啥?