三足金乌 发表于 2013-9-5 23:51:59

大家来看看 我这不是很懂

#include <stdio.h>

void main()
{
        printf("%f\n", 1.0 / 3 * 3);
    printf("%f\n", 3 / 2);
        printf("%f\n", 1 / 3 * 3);
}
VC++6.0上的显示结果:1.000000
                                        0.000000
                                       0.000000
                                       Press any key to continue
printf("%f\n", 3 / 2);就是这句不太懂这句的显示结果为什么是0啊 就算是舍去小数部分也应该是1啊

xhbuming 发表于 2013-9-6 00:24:13

数据在内存中的存储结构不一样,应该是这样~

18555587 发表于 2013-9-6 05:17:43

C语言的整数和实数在内存中的存储方式不一样,整数1以实数要实数的形式输出需要转换一下数据类型。

三足金乌 发表于 2013-9-6 21:35:23

我知道是怎么回事了虽然不知道你们说的对不对但是我还是要谢谢热心的你们   原来是不同类型的数值不能进行运算   要强行转换成一个类型的才能正常输出结果。:loveliness::loveliness::loveliness::loveliness:

怡静 发表于 2013-9-7 00:37:01

你能懂了就好,我帮你设为己经解决。

trek600 发表于 2013-10-3 03:44:51

还是没怎么懂你们说的

随风听雨雪 发表于 2013-10-15 12:55:34

printf("%f\n", 3 / 2);
改为printf("%f\n", 3.0 / 2);就行了
在计算机内部3/2结果是先用0(舍弃小数位)保存,然后在转为F型,结果就还是0
页: [1]
查看完整版本: 大家来看看 我这不是很懂