亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 中的类型转换:类型转换、隐式、显式与示例

什么是 C 中的类型转换?

类型转换是将一种数据类型转换为另一种数据类型。在 C 语言中也称为数据转换或类型转换。它是“C”编程中引入的重要概念之一。

‘C’编程提供了两种类型转换操作:

  1. 隐式类型转换
  2. 显式类型转换

隐式类型转换

隐式类型转换意味着数据类型的转换而不失去其原始含义。当您想要更改数据类型时,这种类型转换是必不可少的 改变存储在变量中的值的重要性。

当一个值被复制到其兼容的数据类型时,C 中的隐式类型转换会自动发生。在转换期间,将应用严格的类型转换规则。如果操作数是两种不同的数据类型,则具有较低数据类型的操作数会自动转换为较高数据类型。这种类型转换可以在下面的例子中看到。

#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);
}

输出:

10
10

  1. 在给定的示例中,我们声明了一个短数据类型的变量,其值初始化为 10。
  2. 在第二行,我们声明了一个 int 数据类型的变量。
  3. 在第三行,我们将变量 s 的值赋给了变量 a。在第三行执行隐式类型转换,因为将短数据类型的变量 s 的值复制到 int 数据类型的变量 a 中。

将字符转换为整数

考虑用整数添加一个用 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 );
}

输出:

 Value of sum : 108

在这里,编译器通过在执行实际加法运算之前将“k”的值转换为 ASCII 来完成整数提升。

算术转换层次结构

编译器首先将字符提升为整数。如果操作数仍然具有不同的数据类型,则将它们转换为出现在以下层次图中的最高数据类型:

<中心>

<图>

算术转换层次结构

考虑下面的例子来理解这个概念:

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

输出:

 sum = 120.000000

首先,c 变量被转换为整数,但编译器将 num c 放入“float”并添加它们以产生“float”结果。

关于隐式转换的要点

我们不能对彼此不兼容的数据类型进行隐式类型转换,例如:

  1. 将 float 转换为 int 会截断小数部分,从而失去值的含义。
  2. 将 double 转换为 float 会将数字四舍五入。
  3. 将 long int 转换为 int 会导致丢弃多余的高位。

在上述所有情况下,当我们转换数据类型时,值就会失去意义。一般情况下,值的意义丢失会被编译器警告。

“C”编程提供了另一种类型转换的方式,即显式类型转换。

显式类型转换

在隐式类型转换中,数据类型会自动转换。在某些情况下,我们可能不得不强制进行类型转换。假设我们有一个变量 div 存储两个操作数的除法,这两个操作数被声明为 int 数据类型。

 int result, var1=10, var2=3;
result=var1/var2;

在这种情况下,对变量 var1 和 var2 执行除法后,存储在变量“result”中的结果将采用整数格式。每当发生这种情况时,存储在变量“result”中的值就失去了意义,因为它没有考虑通常在两个数相除中获得的小数部分。

为了在这种情况下强制进行类型转换,我们使用显式类型转换。

它需要一个类型转换运算符。类型转换操作的一般语法如下:

(type-name) 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;
}

输出:

Value of a is 1.200000
Value of b is 2

  1. 我们已经初始化了一个浮点类型的变量“a”。
  2. 接下来,我们有另一个整数数据类型的变量“b”。由于变量‘a’和‘b’属于不同的数据类型,‘C’不允许使用这样的表达式,它会引发错误。在某些版本的“C”中,表达式会被计算,但结果不是我们想要的。
  3. 为了避免这种情况,我们对浮点类型的变量“a”进行了类型转换。通过使用显式类型转换方法,我们成功地将浮点数转换为数据类型整数。
  4. 我们已经打印了“a”的值,它仍然是一个浮点数
  5. 类型转换后,结果将始终为整数“b”。

这样,我们就可以在C编程中实现显式类型转换了。

总结

在处理不同数据类型时,请记住以下编程实践规则,以防止数据丢失:


C语言

  1. C# 类型转换
  2. C++ 类型转换
  3. Python 类型转换和类型转换
  4. Java 类型转换
  5. 如何处理数据?!
  6. C++ For 循环与示例
  7. 带有示例的 C++ Switch Case 语句
  8. C++ Char 数据类型及示例
  9. C++ 结构与示例
  10. C++ 中的 std::list 示例
  11. C# - 数据类型
  12. C# - 类型转换