C语言编程学习:数据类型的转换

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

类型转换

在 C 语言程序中,经常需要对不同类型的数据进行运算,为了解决数据类型不一致的问题,需要对数据的类型进行转换。例如一个浮点数和一个整数相加,必须先将两个数转换成同一类型。C 语言程序中的类型转换可分为隐式和强制类型转换两种。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

隐式类型转换

所谓隐式类型转换指的是,系统自动将取值范围小的数据类型转换为数据取值范围大的数据类型,它是由系统自动转换完成的。例如,将 int 类型和 double类型的数据相加,系统会将 int类型的数据转换为 double 类型的数据,再进行相加操作,具体示例如下:

int num1=12;

double num2=10.5;

num1+num2;

上述示例代码中,由于 double 类型的取值范围大于 int 类型,因此,将 int类型的 num1 与 double 类型的 num2相加时,系统会自动将 num1的数据类型由 int转换为 double类型,从而保证数据的精度不会丢失。

强制类型转换

所谓强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示:

(类型名)(表达式)

在上述格式中,类型名和表达式都需要用括号括起来,具体示例如下:

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

上述讲解的两种类型转换,看起来简单,但在使用时需要注意以下几个细节:

(1)浮点型与整型

将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个 0 。需要注意的是,赋值时的类型转换实际上是强制的。

(2)单、双精度浮点型

由于 C 语言中的浮点值总是用双精度表示的,所以 float 型数据参与运算时只需要在尾部加 0 延长为 double 型数据。double 型数据转换为 float 型时,会造成数据精度丢失,有效位以外的数据将会进行四舍五入。

(3)char型与 int型

将 int 型数值赋给 char 型变量时,只保留其最低 8 位,高位部分舍弃。将char 型数值赋给 int 型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时会根据 char 型数据值的大小进行判断,若值大于127,就作为负数处理。对于使用者来讲,如果原来 char 型数据取正值,转换后仍为正值。如果原来 char 型值可正可负,则转换后也仍然保持原值,只是数据的内部表示形式有所不同。

(4)int型与 long型

long 型数据赋给 int 型变量时,将低 16 位值送给 int 型变量,而将高 16 位截断舍弃。(这里假定 int型占两个字节)。 将 int型数据送给 long型变量时,其外部值保持不变,而内部形式有所改变。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

(5)无符号整数

将一个unsigned型数据赋给一个长度相同的整型变量时(如:unsigned→int、unsigned long→long, unsigned short→short) ,内部的存储方式不变,但外部值却可能改变。将一个非 unsigned整型数据赋给一个长度相同的 unsigned 型变量时, 内部存储形式不变,但外部表示时总是无符号的。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

求关注,求转发,求支持!

你可能感兴趣的:(C语言编程学习:数据类型的转换)