关于 C 中输出的解释

Explanation about Output in C

所以我在 C:

中有以下代码片段
int a = 25, b = 100, c;
if (b++ <= (a * 4))
  c = 3;
else
  c = 20;
printf ("%f\n", (float) (b / c));

当我 运行 代码时,输​​出 returned 值 33.0000。我期望输出为 33.6667。 我想知道为什么会这样? 我的计算如下:

感谢您的帮助!!

表达式 b / c 正在执行整数除法,因为两个操作数都是整数。这意味着结果值被截断了。

如果要执行浮点除法,将其中一个操作数转换为float

printf ("%f\n", (float)b / c);

您已在代码中将 b 和 c a 声明为 int,然后对它们执行了除法运算,这意味着您对整数执行除法并将结果转换为浮点数。如果您需要除法给出精确的浮点值,请将变量声明为浮点数,

    int a = 25;
    float b = 100.0, c;
if (b++ <= (a * 4))
  c = 3.0;
else
  c = 20.0;
printf ("%f\n",  (b / c));

在转换之前完成 b/c 的整数除法,因此输出为 33。000.Try 将变量 b 转换为浮点数,然后执行除法运算