代码改变世界

[整理]浮点数的自增陷阱

2014-06-30 23:32  Benoly  阅读(2761)  评论(0编辑  收藏  举报

1.++--适用于浮点数

2.实际不使用浮点数的++--

浮点数 包括float 、double、 long double等等都是近似存储
所以每一个浮点数的值都不是准确的
于是如果采取自加 在一些特殊情况下
a的近似值和a+1的近似值会等同
即自加完全没有效果

如果用在循环中 就有可能导致死循环.
#include <stdio.h>
 
int main(void) {
	// your code goes here
        float f=88888888.5;
        f++;
 
        printf("%f",f);//88888888.000000
	return 0;
}

double类型的数据用自增和自减没有啥意义,整型数据的自增和自减的意义是只需要一个指令就可以完成,执行的效率很高。浮点数比较复杂,不可能一个指令就能完成自增和自减,所以并不能提高执行效率