拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 数学运算不回传预期结果

数学运算不回传预期结果

白鹭 - 2022-03-07 2128 0 0

我正在使用一个函式,但代码不起作用。我将函式分解成各个部分,并试图了解自己发生了什么。我懂了:

int res;
res = (1 / 2) * 2   2;
printf("%d", res);

计算自己:

(1 / 2) = 0.5

0.5 * 2 = 1

1 2 = 3

(1 / 2) * 2 2 = 3,对吗?

但是,当我运行代码时,它给我的输出是“2”,而不是“3”。

当我尝试这个时:(使 '(1 / 2)' 到 '0.5')

int res;
res = 0.5 * 2   2;
printf("%d", res);

我得到的预期输出为“3”,这很奇怪,因为上面的示例在理论上与较低的示例相同。这是否与我的编译器不知道简单的数学优先级规则有关?

uj5u.com热心网友回复:

1/2 实际上试图回传一个整数结果 (0),乘以 2 也是 0。

您可以尝试对其进行型别转换

float res;
res = (float)1/(float)2 * 2   2;
printf("%f", res);

它将强制结果为浮点结果(0.5),这将导致正确答案

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *