gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:24:19 25 4
gpt4 key购买 nike

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

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

在计算表达式之前, float 似乎被断言为整数(我也尝试在它们的声明中对 float 进行类型转换)。

最佳答案

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

要强制进行浮点除法,至少有一个操作数需要是浮点。这可以通过多种方式实现,即(并按优选顺序):

  1. 8000.0f/5000
  2. ( float )8000/5000

关于C 类型转换问题(Float 断言为 Int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41862177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com