春天是学习的好时机,很久没提高自己了,所以想通过看书来查漏补缺。工作中一些小处还真难到了我,由此更加坚定了我再次学习的决心。仅以此文纪录我的心得,见证自己的提高历程。
1.float的范围
书上写的是e-038到e+038。
疑问:float没有负数?
答:肯定有负数。
推论:把e-038到e+038理解为绝对值范围,那么最大值为e+038,最小值-e+038。不能表示0,造成了float不能和0比较。
推论验证:通过网上查找,普遍认为是:正负3.4e+038。
结论:通过查找float.h,得到MAX = 3.402823466e+38,MIN = 1.175494351e-38。
另:float和0比较的语句是(f > -0.000001 && f < 0.000001),不是(-0.000001 < f < 0.000001)。
2.数据类型所占的空间
long int占4字节,在32位机器中和int无异。在16位机器中,int是2字节,为了得到4字节,使用long int。
在嵌入式开发中,要根据取值范围灵活运用int,如int8,uint16,int32。
3.浮点数运算
所有浮点数运算都是double下进行。
在有的环境下,不支持浮点运算;支持的也容易出错。要谨慎使用,注意类型转化。
4.无值型数据类型void
int fun1(void):fun1不带参数。
fun2(void * p):fun2可以带指向任何类型的指针。
(void)fun3():忽略fun3的返回值。
5.不同的类型间的相互转化
如果转换在赋值号两边相互进行,则右边的类型转换位左边的类型。
从float转int,把小数部分截断;double转float由四舍五入获得;long转short或char去掉高位部分。