C语言数据类型转换基本规则

        程序语句和表达式通常应该只使用一种类型的变量和常量,但是如果混合使用类型,

C使用一个规则集合来完成数据类型的自动转换。

  以下是一些C数据类型转换的基本规则

    1.当出现在表达式中时,有符号和无符号的char和short类型都将自动转换为int。

    2.在包含两种数据类型的任何运算中,较低级别类型将会转为运算中另一个较高级别的数据类型。

    3.数据类型级别从高到低的顺序是long double、double、float、usigned long long、long long unsigned long、long、   unsigned int、int一个可能的例外是当long和int具有相同大小时,unsigned int级别高于long,short和char由规则1被提升到int。

    4.在赋值语句中,计算结果将被转换为要被赋值的那个变量的类型,这个过程可能导致级别提升(被赋值的类型级别高)或者降级(被赋值的类型级别低),提升通常是一个平滑无损的过程,然而降级可能导致真正的问题。

    

    5.作为函数的参数被传递时,char和short会被转为int,float转为double,但可以通过函数原型的指定阻止自动提升的发生。

    

    参考 : C primer plus

时间: 2024-10-05 17:40:52

C语言数据类型转换基本规则的相关文章

C语言数据类型转换

变量的数据类型是可以转换的.转换的方法有两种,一种是自动转换,一种是强制转换. 自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成.自动转换遵循以下规则: 若参与运算量的类型不同,则先转换成同一类型,然后进行运算. 转换按数据长度增加的方向进行,以保证精度不降低.如int型和long型运算时,先把int量转成long型后再进行运算. 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算. char型和short型参与运

数据类型转换-运算符

##基本数据类型转换 - 默认顺序是 * byte->short->int->long->float->double - 自动提升规则(针对二元操作符) * 所有的byte,short,char型会自动提升为int型 * 若一个操作数是long类型,则另一个操作数也会转换为long类型,计算的结果类型也是long类型 * float类型,double类型跟long类型的提升规则一样 - 注意 * 默认浮点型是double类型,默认整型是int类型 * 举例说明: ``` fl

Arduino中数据类型转换 int转换为char 亲测好使,itoa()函数

由于博主最近在做一个项目,需要采集不同传感器的数据,包括float型的HCHO,以及int型的PM2.5数据.但是最终向服务器上传的数据都得转换为char型才能发送,这是借鉴了一个github上面的实例实现了在Arduino上部署socket使之与服务器进行交互. github实例如下: https://github.com/washo4evr/Socket.io-v1.x-Library 在本项目中多次使用了数据类型转换,前文提到了float和double类型转换为char,如下:http:/

C语言自动类型转换

自动转换遵循以下规则: 1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算. 2) 转换按数据长度增加的方向进行,以保证精度不降低.(eg:int型和long型运算时,先把int量转成long型后再进行运算.) a.若两种类型的字节数不同,转换成字节数高的类型 b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型 3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算. 4) char型和short型参

javaScript-数据类型和数据类型转换

特别声明,以下为达内科技web前端讲师张东张老师的原创笔记,未经允许,不可转于其他商用,仅供学习. 1. 什么是JavaScript:专门编写网页交互的语言 2. 什么变量:内存中存储*一个*数据的存储空间,再起一个名字 声明: 创建一个变量, var 变量名; 赋值: 将等号右边的数据保存到等号左边的变量中.变量名=值; 取值: 在任何位置使用变量名等效于直接使用变量中的值 特殊:1. 简写:var 变量名=值;——建议 ***2. 声明提前:在正式执行程序前,都会预读所有var声明的变量,集

2016.7.29 数据类型转换

js是弱类型语言,定义不像后台一样严格使用string.int.boolean等,而是直接一个var定义所有的对象. 玩数据类型转换之前,我们先讲讲各种数据的作用和形式. string     字符串 Number  数字 Boolean  布尔类型 NaN          数字类型,表示数字的空和错误 undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义. undefined典型用法: (1)变量被声明了,但没有赋值时,就等于undefined. (2) 调用函

JavaScript之基础-3 JavaScript 数据类型、数据类型转换

一.数据类型 数据类型 基本类型 - 数字类型 - 既可以表示32位整数,也可以表示64位的浮点数 - 整数 - 十进制:逢十进一的整数,如1234567890 - 八进制:逢八进一的整数,如01235670 - 十六进制: - 浮点数 - 使用小数点记录数据,如 95.5,3.1415926 - 使用指数记录数据,如 4.3e23, 4.3E-23 string 类型 - 字符串类型 - 表示一系列的文本字符数据,如性别.姓名.住址等 - 由Unicode字符,数字,标点组成的序列 - Jav

数据类型回顾——数据类型转换(显式和隐式)—JS学习笔记2015-6-3(第47天)

对于JS这种语言来说,因为它是一种动态类型语言,变量是没有类型的,可以随时赋予任意值. 但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型. 大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换. 首先看下强制类型转换(显式) 之前提到的Namber.parseInt.parseFloat 都是强制类型转换: 这里在看阮一峰博客(http://javascript.ruanyifeng.com/grammar/conversion.html#toc1) Number方法

语法》第九章 数据类型转换

第二部分  语法 ************第九章 数据类型转换 *************** JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值. 虽然变量没有类型,但是数据本身和各种运算符对运算子是有类型要求的.如果运算符发现,数据的类型与预期不符,就会自动转换类型.比如,减法运算符预期两侧的运算子应该是数值,如果不是,就会自动将它们转为数值. JS有一套数据类型自动转换的规则 一.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数