C语言中数据类型的隐式转换
2017-09-16 21:01
344 查看
1、隐式转换
C在以下四种情况下会进行隐式转换:
1、算术运算式中,低类型能够转换为高类型。
2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
2、算数运算的隐式转换
算数运算中,首先有如下类型转换规则:
1、字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 。
2、short型转换为int型(同属于整型) 。
3、float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 。
其次,有下面的规则。
当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。转换规则如下图所示:
上图的简化图如下所示:
3、算数运算示例
执行:x = 100 + 'a' + 1.5 * u + f / 'b' - s * 3.1415926
其中,u为unsigned型,f为float型,s为short型,x为float型。式中右面表达式按如下步骤处理:
1、首先将'a'、'b'和s换成int,将1.5和f转换为double型。
2、计算100+'a',因'a'已转换为int型,于是此运算结果为197。
3、计算1.5*u,由于1.5已转换为double,u是unsigned型,于是首先u转换为double,然后进行运算,运算结果为double。
4、计算197+1.5 * u,先将197转换为double(如197.00…00),其结果为double。
5、计算f/ 'b',f已转换为double,'b'已转换为int,于是先将'b'再转换为double,其结果为double。
6、计算(197+1.5 * u)+f / 'b',者均为double,于是结果也为double。
7、计算s * 3.1415926,先将s由int转换为double,然后进行运算,其结果为double。
8、最后与前面得的结果相减,结果为double。
9、最后将表达式的结果转换为float并赋给x。
原博客地址:http://www.cnblogs.com/cy568searchx/archive/2012/09/21/2697080.html
C在以下四种情况下会进行隐式转换:
1、算术运算式中,低类型能够转换为高类型。
2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
2、算数运算的隐式转换
算数运算中,首先有如下类型转换规则:
1、字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 。
2、short型转换为int型(同属于整型) 。
3、float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 。
其次,有下面的规则。
当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。转换规则如下图所示:
上图的简化图如下所示:
3、算数运算示例
执行:x = 100 + 'a' + 1.5 * u + f / 'b' - s * 3.1415926
其中,u为unsigned型,f为float型,s为short型,x为float型。式中右面表达式按如下步骤处理:
1、首先将'a'、'b'和s换成int,将1.5和f转换为double型。
2、计算100+'a',因'a'已转换为int型,于是此运算结果为197。
3、计算1.5*u,由于1.5已转换为double,u是unsigned型,于是首先u转换为double,然后进行运算,运算结果为double。
4、计算197+1.5 * u,先将197转换为double(如197.00…00),其结果为double。
5、计算f/ 'b',f已转换为double,'b'已转换为int,于是先将'b'再转换为double,其结果为double。
6、计算(197+1.5 * u)+f / 'b',者均为double,于是结果也为double。
7、计算s * 3.1415926,先将s由int转换为double,然后进行运算,其结果为double。
8、最后与前面得的结果相减,结果为double。
9、最后将表达式的结果转换为float并赋给x。
原博客地址:http://www.cnblogs.com/cy568searchx/archive/2012/09/21/2697080.html
相关文章推荐
- C语言中隐式数据类型转换的总结
- C语言中数据类型的隐式转换
- c语言的隐式(自动)数据类型转换
- Day3、C语言数据类型、变量的输入与输出、进制的转换
- C语言中的数据类型转换问题
- c语言强制转换数据类型
- C语言运算中的数据类型自动转换原则
- C#中数据类型转换-隐式转换
- js之数据类型-隐式转换-类型检测 学习总结
- JAVA 强制数据类型转换和隐式数据类型转换
- 【C语言】数据类型转换导致读取参数错误
- C语言隐式类型转换规则
- 【转】C语言隐式类型转换规则
- C语言各种数据类型自动转换
- C语言数据类型转换实例代码
- 简单介绍JavaScript数据类型之隐式类型转换
- C语言数据类型转换
- org.springframework.jdbc.UncategorizedSQLException: 不允许从数据类型 varbinary 到 date 的隐式转换
- C语言中的类型转换与数据的机器码存储
- 关于C语言的隐式类型转换