gpt4 book ai didi

预处理器值可以用于 C 中的算术吗?

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

在做一个项目时,我偶然发现了一个问题。使用预处理器定义值的一些算术结果为 0.00

#include <stdio.h>

#define PINGCOUNT 10

int main()
{
int successful = 5;
int lossPercentage = ((PINGCOUNT - successful) / PINGCOUNT) * 100;
printf("%.2lf\n", lossPercentage);

return 0;
}

我在在线编译器中重新运行了这段代码并得到了相同的结果。我不确定我的措辞是否不好,但我在网上找不到有关此主题的信息。

如果我首先声明 int count = PINGCOUNT,然后用 count 替换 PINGCOUNT 实例,则上述代码将起作用。此外,我尝试在一些简单的减法/加法中使用 PINGCOUNT 并且它工作正常。我是否遗漏了一些明显的东西?

最佳答案

由于程序中的所有内容都是 int,因此您正在进行整数除法,因此 (PINGCOUNT - success)/PINGCOUNT 等于 0,乘以 100 仍然是 0

然后,您尝试将结果打印为 double,这会调用未定义的行为

更改此行

int lossPercentage = ((PINGCOUNT - successful) / PINGCOUNT) * 100;

至:

double lossPercentage = (PINGCOUNT - successful) * 100.0 / PINGCOUNT;

确保结果的类型为double,按照您的预期执行操作。

关于预处理器值可以用于 C 中的算术吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33843017/

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