类型转换将一种数据类型转换为另一种数据类型。 也称为数据转换或类型转换。 它是“ C”编程中引入的重要概念之一。
“ C”编程提供两种类型的类型转换操作:
- 隐式转换 ( Implicit type casting )
- 强制类型转换 ( Explicit type casting)
隐式转换
隐式类型转换意味着在不丢失其原始含义的情况下转换数据类型。 当您想更改数据类型而不更改变量内部存储的值的重要性时,这种类型转换是必不可少的。
将值复制到其兼容数据类型时,隐式类型转换会自动发生。 在转换期间,将应用严格的类型转换规则。 如果操作数具有两种不同的数据类型,则具有较低数据类型的操作数(占用空间较小)将自动转换为较高数据类型。 在下面的示例中可以看到这种类型的类型转换。
#include<stdio.h> int main() { short a=10; //initializing variable of short data type int b; //declaring int variable b=a; //implicit type casting printf("%d\n",a); printf("%d\n",b); }
该例子的第六行,有个隐式数据转换。
把字符转换成整数
考虑添加一个以ASCII解码的字符和整数的示例:
#include <stdio.h> main() { int number = 1; char character = 'k'; /*ASCII value is 107 */ int sum; sum = number + character; printf("Value of sum : %d\n", sum ); }
类型转换顺序结构
常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:
举例说明:
#include <stdio.h> main() { int num = 13; char c = 'k'; /* ASCII value is 107 */ float sum; sum = num + c; printf("sum = %f\n", sum ); }
强制类型转换
在隐式类型转换中,数据类型将自动转换。 在某些情况下,我们可能不得不强制进行类型转换。 假设我们有一个变量div,该变量为两个被声明为int数据类型的操作数的商。
int result, var1=10, var2=3; result=var1/var2;
在这种情况下,在对变量var1和var2进行除法之后,存储在变量result中的结果将为整数格式。 每当发生这种情况时,存储在变量result中的值就会失去其含义,因为它没有考虑通常在两个数字的除法中获得的小数部分。
为了在这种情况下强制类型转换,我们使用显式类型转换。它需要类型转换运算符。 类型转换操作的一般语法如下:
(type-name) expression
- type-name 是标准的C语言数据类型。
- expression 表达式可以是常量,变量或实际表达式。
让我们编写一个程序来演示“C语言中类型强制转换是如何实现的
#include<stdio.h> int main() { float a = 1.2; //int b = a; //Compiler will throw an error for this int b = (int)a + 1; printf("Value of a is %f\n", a); printf("Value of b is %d\n",b); return 0; }
范例解释
- 我们已经初始化了一个float类型的变量’a’
- 接下来,我们有另一个整数数据类型的变量“ b”。 由于变量“ a”和“ b”具有不同的数据类型,因此“ C”将不允许使用此类表达式,并且会引发错误。 在某些版本的“ C”中,将对表达式进行求值,但结果将不理想。
- 为了避免这种情况,我们对float类型的变量’a’进行了类型转换。 通过使用强制类型转换的方法,我们已成功将float数据类型转换为类型整数。
- 打印出“ a”值,它是浮点数
- 经过类型转换后,“ b”为整数
摘要
- 类型转换意味着将一种数据类型转换为另一种数据类型
- 将较小的数据类型转换为较大的数据类型也称为类型提升
- C语言提供了隐式类型转换和显式的类型转换方式
- 找到和睦兼容的数据类型后,隐式类型转换将自动运行
- 显式类型转换需要类型转换运算符。