关于C中输出的说明



所以我在C:中有以下代码片段

int a = 25, b = 100, c;
if (b++ <= (a * 4))
  c = 3;
else
  c = 20;
printf ("%fn", (float) (b / c));

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

  • 在第2行中,b在操作后递增,因此,虽然语句将返回true(100<=25*4(,但此操作后b的值将为101
  • 在输出中,我们计算101/3,它应该返回33.6667
  • 然而,情况并非如此

感谢您的帮助!!

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

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

printf ("%fn", (float)b / c);

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

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

在强制转换b/c之前对其进行整数除法运算,因此输出为33.000。请尝试将变量b强制转换为float,然后执行除法运算