C-类型转换
在本教程中,我们将学习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,因此小数部分将被截断。