C语言类型转换

C语言类型转换教程

C 语言 中,一个 数据类型 的值可以被转换成另一种数据类型的值,这个转换就叫做类型转换。同时,在 C 语言中,是支持隐式类型转换的。

隐式类型转换就是我们将两个不同类型的变量之间赋值,并且没有使用强制类型转换,这时候就会发生隐式类型转换。

C语言类型转换详解

语法

(T)v

参数

参数 描述
T 需要转换的数据类型,比如 intfloat 等等。
v 需要转换的变量。

说明

将变量 v 转换为类型 T。

C语言类型转换说明

在 C 语言类型转换过程中,从一个取值范围较小的类型转换到一个取值范围较大的类型(例如将 short 转换为 int),完全正确。

当从一个取值范围较大的转换到取值范围较小的类型时(例如将 int 转换为 short 或将 float64 转换为 double),会发生精度丢失(截断)的情况。

案例

类型转换

从 short 类型转换成 int 类型

#include <stdio.h> int main(long argc, char **argv) { printf("嗨客网(www.haicoder.net)\n"); short a = 100; int b = (int)a; printf("a = %d, b = %d\n", a, b); }

程序运行后,控制台输出如下:

57_C语言类型转换.png

首先, 我们定义了一个 short 类型的 变量 a,并赋值为 100。接着,我们将 short 类型的变量 a,强制类型转换为 int 类型,并赋值给 b。

最后,我们打印 a 的值和 b 的值,a 的值没有被改变,还是原来的值,b 的值是强制类型转换后的值。

类型转换

从 short 类型转换成 int 类型

#include <stdio.h> int main(long argc, char **argv) { printf("嗨客网(www.haicoder.net)\n"); int a = 2345671; short b = (short)a; printf("a = %d, b = %hd\n", a, b); }

程序运行后,控制台输出如下:

58_C语言类型转换.png

首先, 我们定义了一个 int 类型的变量a,并赋值为 2345671。接着,我们将 int 类型的变量 a,强制类型转换为 short 类型,并赋值给 b。

最后,我们打印 a 的值和 b 的值,a 的值没有被改变,还是原来的值,b 的值是强制类型转换后的值,因为,我们是将变量从 int 转成了 short,因此,丢失了精度。

类型转换

从 short 类型转换成 int 类型

#include <stdio.h> int main(long argc, char **argv) { printf("嗨客网(www.haicoder.net)\n"); float a = 123.123; int b = (int)a; printf("a = %f, b = %d\n", a, b); }

程序运行后,控制台输出如下:

59_C语言类型转换.png

首先, 我们定义了一个 float 类型的变量 a,并赋值为 123.123。接着,我们将 float 类型的变量 a,强制类型转换为 int 类型,并赋值给 b。

最后,我们打印 a 的值和 b 的值,a 的值没有被改变,还是原来的值,b 的值是强制类型转换后的值,因为,我们是将变量从 float 转成了 int,因此,丢失了精度。

隐式类型转换

C 语言中是支持隐式类型转换的

#include <stdio.h> int main(long argc, char **argv) { printf("嗨客网(www.haicoder.net)\n"); float a = 123.123; int b = a; printf("a = %f, b = %d\n", a, b); }

程序运行后,控制台输出如下:

60_C语言类型转换.png

首先, 我们定义了一个 float 类型的变量 a,并赋值为 123.123。接着,我们直接将 float 类型的变量 a 赋值给了 int 类型的变量 b。

这里,我们没有使用强制类型转换,直接对不同类型的变量进行赋值,这时,就发生了隐式类型转换。

C语言类型转换总结

在 C 语言中,一个数据类型的值可以被转换成另一种数据类型的值,这个转换就叫做类型转换。C 语言类型转换语法:

(T)v