printf("%f", 8/5);
printf("%d", 8.0/5.0);
这两句输出的结果有点意外,比如第一个输出的是0.000000,而8/5本来按整数的结果是1,原因是整数和浮点数的编码方式不一样,这个整数1存储到浮点数时,编码方式完全不一样,浮点数第一位是符号位,中间8位是阶码,后面23为是尾数.
整数1按照浮点数解析表示:0 0000 0000 0000 0000 0000 0000 0000 001
表示成整数:[1 + 2^23] * 2^(-127) 很小的值
Tips:整数 / 整数 = 整数, 浮点数 / 浮点数 = 浮点数