C语言类型转换

简介: C语言类型转换

前言

本篇文章将带大家学习C语言中的类型转换,类型转换是C语言中比较常用的知识点,希望大家能够掌握。


一、强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。在实际的开发中我们难免会遇到不同类型间的转换,所以说我们有必要去学好强制类型的转换。比如指针类型之间的转换,或者浮点数和整数之间的转换。

1.强制类型转换的用法

(想要转换的类型)(原类型)

代码示例:

#include <stdio.h>
int main(void)
{
  short a = 10;
  int b = (int)a;
  return 0;
}

2.强制类型转换注意点

1.不是所有的转换都能成功,当不能进行强制类型转换时将报错。

2.进行强制类型转换时小的数据类型向大的数据类型进行转换时没有问题,大的数据像小的数据进行转换时会发生数据的截断。

#include <stdio.h>
int main(void)
{
  short a = 0x8888;
  char b = (char)a;
  printf("0x%x,0x%x", a, b);
  return 0;
}

运行结果

image.png

当short向char转换时将会截断高位只保留第最低位的数据。

二、隐式类型转换

隐式类型转换是编译器主动进行的数据类型转换,不需要我们自己去转换。

示例:

#include <stdio.h>
int main(void)
{
  char c = 1;
  short a = c;
  int b = a;
  long d = b;
  return 0;
}

注意点:

由于隐式类型转换是编译器主动进行的数据类型转换,所以我们必须注意是高类型像低类型转换还是低类型向高类型转换。


总结

强制类型转换其实并不难,很多同学都不会使用强制类型转换,甚至出现错误的用法,希望这篇文章能够帮助到大家。掌握好了强制类型转换让你在开发中避免一些不必要的错误。


相关文章
|
4月前
|
程序员 编译器 C语言
『C语言进阶』隐式类型转换规则
『C语言进阶』隐式类型转换规则
|
4月前
|
安全 程序员 C语言
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(下)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
39 5
|
4月前
|
设计模式 编译器 Linux
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(中)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
32 0
|
4月前
|
安全 编译器 C语言
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(上)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
33 0
|
12月前
|
存储 C语言
C语言入门(2)——数据类型、运算符、类型转换、控制语句
char short int long flout(默认保存小数点后6位,并且可以四舍五入) double 输出int类型的值%d 输出字符用%c 输出long用%ld 输出float用%f 输出double用%lf
126 0
|
4月前
|
存储 物联网 编译器
详解【C语言】类型转换--整型提升,算术
详解【C语言】类型转换--整型提升,算术
|
4月前
|
存储 编译器 C语言
C 语言:类型转换与常量的细致理解
有时,您必须将一种数据类型的值转换为另一种类型。这称为类型转换
136 0
|
10月前
|
编译器 C语言 C++
09 C++ - 更严格的类型转换(比较C语言)
09 C++ - 更严格的类型转换(比较C语言)
36 0
|
存储 程序员 编译器
【C语言】你不知道的隐式类型转换规则
本文接着C语言中的操作符(万字详解)讲解隐式类型转换规则,还有没学操作符的老铁可以回头看看。 在 C 语言中,类型转换的方式一般可分为隐式类型转换和显示类型转换(也称为强制类型转换)。 其中隐式类型转换由编译器自动进行,不需要程序员干预。 隐式类型转换通常有两种情况:整形提升和算术转换。
384 0
|
存储 编译器 C语言
【C语言初阶】表达式求值(隐式类型转换,算术转换)
目录 表达式求值 一、先补充一点(为下文做准备) 1.首先,要了解原码、反码、补码(简单说一下) 2.有符号(signed)与无符号(unsigned)的区别 二、隐式类型转换(整型提升) 1.什么是整型提升? 2.整型提升的意义 3.有符号(signed)类型的整型提升 3.无符号(unsigned)整形提升 4.简而言之 5.例子 三、算术转换 四、
208 0
【C语言初阶】表达式求值(隐式类型转换,算术转换)