关于 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。
我想知道为什么会这样?
我的计算如下:
- 在第 2 行中,b 被递增 post-操作,因此当语句 return 为真 (100 <= 25*4) 时,此操作后 b 的值将是101.
- 在输出中,我们计算 101/3,这应该 return 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 转换为浮点数,然后执行除法运算
所以我在 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。 我想知道为什么会这样? 我的计算如下:
- 在第 2 行中,b 被递增 post-操作,因此当语句 return 为真 (100 <= 25*4) 时,此操作后 b 的值将是101.
- 在输出中,我们计算 101/3,这应该 return 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 转换为浮点数,然后执行除法运算