C中的类型转换

    类型转换基本上是从一种类型到另一种类型的转换。类型转换有两种:
    1.隐式类型转换
在这里插入图片描述    也称为“自动类型转换”。

  • 由编译器自行完成,无需用户进行任何外部触发。
  • 通常在表达式中存在多个数据类型时发生。在这种情况下,进行类型转换(类型提升)以避免数据丢失。
  • 变量的所有数据类型都升级为数据类型最大的变量的数据类型。
       bool -> char -> short int -> int -> 
       unsigned int -> long -> unsigned -> 
       long long -> float -> double -> long double
  • 隐式转换可能丢失信息,可能丢失符号(当signed隐式转换为unsigned时),并且可能发生溢出(当long long隐式转换为float时)。

    隐式转换示例:

// An example of implicit conversion
#include<stdio.h>
int main()
{
	int x = 10; // integer x
	char y = 'a'; // character c

	// y implicitly converted to int. ASCII
	// value of 'a' is 97
	x = x + y;
	
	// x is implicitly converted to float
	float z = x + 1.0;

	printf("x = %d, z = %f", x, z);
	return 0;
}

    输出:

x = 107, z = 108.000000

    2.显式类型转换
在这里插入图片描述    这个过程也被称为类型转换,它是用户定义的。在这里,用户可以对结果进行类型转换,使其成为特定的数据类型。
    语法:

(type) expression

    type表示最终结果将转换为的数据类型。

// C program to demonstrate explicit type casting
#include<stdio.h>

int main()
{
	double x = 1.2;

	// Explicit conversion from double to int
	int sum = (int)x + 1;

	printf("sum = %d", sum);

	return 0;
}

    输出:

sum = 2

    类型转换的优点:

  • 这样做是为了利用类型层次结构或类型表示的某些特性。
  • 它帮助我们计算包含不同数据类型变量的表达式。
参考文档

[1]Ankita Dutta.Type Conversion in C[EB/OL].https://www.geeksforgeeks.org/type-conversion-c/,2020-12-25.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值