C-类型转换

时间:2020-02-23 14:32:02  来源:igfitidea点击:

在本教程中,我们将学习C编程语言中的类型转换。

在C语言中,我们可以具有由不同数据类型的常量和变量组成的表达式。

转换类型

C中有两种类型的转换。

  • 隐式类型转换
  • 显式类型转换

隐式类型转换

C执行类型的自动转换以评估表达式。
这称为隐式类型转换。

例如,如果我们在表达式中有一个整数数据类型值和一个double数据类型值,则C会自动将整数类型值转换为double以便评估表达式。

隐式类型转换的规则

以下是C中隐式类型转换的规则。

首先,将所有的char和short转换为int数据类型。

然后,

  • 如果表达式中的任何一个操作数为" long double",则其他操作数将被转换为" long double",我们将得到结果为" long double"。

  • 否则,如果任何一个操作数为" double",则另一个将被转换为" double",结果将为" double"。

  • 否则,如果任何一个操作数为" float",则其他操作数将被转换为" float",结果将为" float"。

  • 否则,如果任何一个操作数为" unsigned long int",则其他操作数将被转换为" unsigned long int",我们将得到结果为" unsigned long int"。

  • 否则,如果任何一个操作数是" long int"而另一个是" unsigned int",

如果可以将unsigned int转换为long int,则将其转换为long int,结果将为long int。

  • 否则,两者都将转换为unsigned long int,结果将为unsigned long int

  • 否则,如果任何一个操作数为long int,则另一个将转换为long int,我们将得到结果为long int。

  • 否则,如果任何一个操作数为" unsigned int",则另一个将被转换为" unsigned int",结果将为" unsigned int"。

记住以下隐式类型转换的层次结构。

如果我们从较高的数据类型降级到较低的数据类型,则会导致丢失位。

例如:从" double"移到" float"会导致数字舍入。

从" float"降级为" int"会导致小数部分被截断。

显式类型转换

在显式类型转换中,我们决定要转换表达式的类型。

显式类型转换的语法为:

(type)表达式

其中,type是我们要将表达式转换成的任何类型。

在下面的示例中,我们将浮点数转换为整数。

#include <stdio.h>
int main(void)
{
  //variables
  float
    x = 24.5,
    y = 7.2;

  //converting float to int
  int result = (int) x/(int) y;
  
  //output
  printf("Result = %d\n", result);
  
  printf("End of code\n");
  return 0;
}
Result = 3
End of code

在上面的代码中,((int)x将值24.5转换为24,而((int)y将值7.2转换为7,因此,我们得到24/7,即3,因为result的类型为int,因此小数部分将被截断。