基本类型的赋值、转换问题
来源:互联网 发布:jquery数据交互 编辑:程序博客网 时间:2024/05/22 00:17
基本类型的赋值、转换问题
(1) c中是不是也和Java一样,存在隐式转换和强制转换?有区别吗?
有区别。
C中的隐式转换就是“整型提升”。C中的“整型提升”仅指:表达式中的操作数类型<=int的情况下(short和char),提升到int型。
(注意:是表达式中的char和short在使用之前被转换为int。)
>=int型的类型的提升,被称为寻常算术转换:
寻常转换应该遵循:int – unsigned int – long int – unsigned long int – float – double – long double由小到大的转换规则:一个操作数类型相对另一个操作数类型排名较低(较小),则自动转换为相对较大的类型。(数据转换按数据存储长度增长的方向进行。)
寻常算术转换和强制转换均为“算术转换”。寻常算术转换侧重于自动转换到相对较高的类型(如int - float),强制转换则可人为将其转换到其他类型(如long – int ; int - double)。
(记住:是先转换,再执行操作。)
(记住:若某个操作符的各个操作数属于不同的类型,则除非其中一个操作数转换为另一个操作数类型,否则操作无法进行。问:该规则是否也针对赋值操作符“=”?不过等号右边的操作数(右值)自动转换成了左值的类型。)
(注意:以上概念是针对算术操作符而言的。算术操作符就是+ - * / %。
问:那对于其它操作符呢?尤其是关系操作符?)
(2) 不同类型操作数互相赋值时的精度变化情况:
从int到float : 精度可能会降低(有点例外)。Float只能保证6位有效数字的精度(浮点型以指数方式存储),虽然长度为4个字节。
在32位平台上,通常int是4字节长度,最多表示到21亿多,而int型是“绝对精确”的,换句话说,就是int行最多可以保证10位十进制有效数字的精确度。而float只能保证6位有效数字的精确度,因此int到float的转换是可能丢失精度的。
比如整数“1234567899”转换成float后,大约是:1.23457936乘10的9次方,也就是从第7位有效数字开始已经不准确了。double可以保证15位10进制有效数字的精度,所以从int到double不会有这个警告。
(以上摘录自网络。)
(3) 左值与右值的注意点?
左值可以是变量或表达式,但必须能标识一个可以存储结果值的地点。
(1) c中是不是也和Java一样,存在隐式转换和强制转换?有区别吗?
有区别。
C中的隐式转换就是“整型提升”。C中的“整型提升”仅指:表达式中的操作数类型<=int的情况下(short和char),提升到int型。
(注意:是表达式中的char和short在使用之前被转换为int。)
>=int型的类型的提升,被称为寻常算术转换:
寻常转换应该遵循:int – unsigned int – long int – unsigned long int – float – double – long double由小到大的转换规则:一个操作数类型相对另一个操作数类型排名较低(较小),则自动转换为相对较大的类型。(数据转换按数据存储长度增长的方向进行。)
寻常算术转换和强制转换均为“算术转换”。寻常算术转换侧重于自动转换到相对较高的类型(如int - float),强制转换则可人为将其转换到其他类型(如long – int ; int - double)。
(记住:是先转换,再执行操作。)
(记住:若某个操作符的各个操作数属于不同的类型,则除非其中一个操作数转换为另一个操作数类型,否则操作无法进行。问:该规则是否也针对赋值操作符“=”?不过等号右边的操作数(右值)自动转换成了左值的类型。)
(注意:以上概念是针对算术操作符而言的。算术操作符就是+ - * / %。
问:那对于其它操作符呢?尤其是关系操作符?)
(2) 不同类型操作数互相赋值时的精度变化情况:
从int到float : 精度可能会降低(有点例外)。Float只能保证6位有效数字的精度(浮点型以指数方式存储),虽然长度为4个字节。
在32位平台上,通常int是4字节长度,最多表示到21亿多,而int型是“绝对精确”的,换句话说,就是int行最多可以保证10位十进制有效数字的精确度。而float只能保证6位有效数字的精确度,因此int到float的转换是可能丢失精度的。
比如整数“1234567899”转换成float后,大约是:1.23457936乘10的9次方,也就是从第7位有效数字开始已经不准确了。double可以保证15位10进制有效数字的精度,所以从int到double不会有这个警告。
(以上摘录自网络。)
(3) 左值与右值的注意点?
左值可以是变量或表达式,但必须能标识一个可以存储结果值的地点。
阅读全文
0 0
- 基本类型的赋值、转换问题
- 赋值过程的类型转换
- 赋值中类型的转换
- JavaScript中的基本类型和引用类型的赋值问题和传参问题
- 基本类型的转换
- 基本类型的转换
- 基本类型的类型转换
- 基本类型的类型转换
- (集合和引用类型、基本数据类型赋值不一样)一个简单的java问题 先后的赋值问题
- 关于基本类型的简单赋值和复合赋值运算
- 变量的赋值和类型转换
- C语言赋值类型的转换
- 基本问题之类型转换,浮点数的表示
- 基本问题之类型转换后的指针寻址
- Qt中QString与基本类型的转换问题
- JAVA的基本类型及自动转换问题
- JAVA的基本类型及自动转换问题
- Enum的基本类型值相同转换问题
- 【字符串】模拟实现atoi和itoa
- JAVA文件压缩
- 关于JNDI
- 51单片机:io口
- elasticsearch介绍集群,模拟横向扩展节点、节点宕机、改变分片
- 基本类型的赋值、转换问题
- 反射获取属性
- C控制语句之循环语句(一)
- 百练2815:城堡问题题解
- RE:JAVA学习-初入循环
- 指针、数组中的注意点(多重指针,指针数组,多维数组)
- JS&jQuery高级01(用jQuery时的准备工作)
- HDU 6039 Gear Up(并查集+线段树)
- 计数排序