c语言学习笔记(结合教程-C和指针
C语言指针部分的经典学习资料,学习指针不容错过的文档
1. 基本类型的赋值,转换问题。[(1)见p80;]
(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) 左值与右值的注意点?
你可能喜欢
- C语言指针详解
- 语言分析
- 彻底搞定C指针
- C语言经典程序
- C语言经典算法
- C语言函数指针
- 专升本历年试题
- C语言指针用法详解8页
- C语言中的指针详解6页
- 彻底搞定C语言指针详解-完整版- 适合初学者-必备14页
- C语言指针用法详解15页
- C语言中不同的结构体类型的指针间的强制转换详解3页
- 详解C语言指针变量交换问题2页
- C语言经典程序3页
- 经典C语言程序100例子68页
- 12864液晶经典驱动程序,一看就懂,有详细的注释(C语言编写,不看后悔)5页
- 经典C语言程序设计100例71-3页
- 经典C语言程序设计100例51-2页
- 经典C语言程序设计100例41-502页
- C语言经典算法100例30页
- C语言经典编程算法15页
- 数据结构经典算法 C语言版14页
- C语言经典四种算法详解11页
- C语言经典算法9页
- C语言经典算法9页
- 历年专升本试题3页
- 专升本历年试题归纳14页
- 专升本C语言历年考试题及答案18页
- 华东交通大学历年专升本试题9页
- 历年专升本单选与汉译英试题27页
- 专升本管理学历年试题分析7页


