当前位置:  开发笔记 > 编程语言 > 正文

C类型转换问题(Float断言为Int)

如何解决《C类型转换问题(Float断言为Int)》经验,为你挑选了1个好方法。

我想知道为什么图像中的以下两个打印件不相同?

uint16_t linCalc(uint16_t adcAverage){
    float k = 2500 / 2500;
    float j = 8000 / 5000;
    int a = 1000 * (j - k);
    printf("a = %d\n", a);
    k = 1;
    j = 1.6;
    int b = 1000 * (j - k);
    printf("b = %d\n", b);
}
b = 600
a = 0
b = 600
a = 0
b = 600
a = 0
b = 600
a = 0
b = 600
a = 0
b = 600
a = 0
b = 600
a = 0
b = 600

似乎浮点数在计算表达式之前被称为int(我还试图在它们的声明中对浮点数进行类型转换).



1> StoryTeller ..:

它们不相同,因为8000/5000两个操作数都是int常量,因此执行整数除法.分工的结果是1.

要强制浮点除法,至少有一个操作数需要为a float.这可以通过几种方式实现,即(并按优先顺序):

    8000.0f / 5000

    (float)8000 / 5000

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有