为什么带括号和不带括号的乘法有很大区别?

问题描述 投票:0回答:2

如果我不加括号而得到华氏温度,则得到的数字不同于与之相乘的数字。为什么会这样?

#include <stdio.h>

int main (){
    double userinput, fahr1, fahr2;

    printf("Enter a number in Cels ");
    scanf("%lf", &userinput);

    fahr1 = userinput*(9/5)+32;
    fahr2 = userinput*9/5+32;

    printf("fahr1 = %f and fahr2 = %f \n", fahr1, fahr2);

    return 0;
}

输出:

Enter a number in Cels 15
fahr1 = 47.000000 and fahr2 = 59.000000 
c brackets multiplying
2个回答
0
投票

(9/5)是整数除法,其结果为1。但是userinput*9被评估为双精度,然后除以5也被视为双精度。


0
投票

解释很容易

没有括号:15.0 * 9 = 135.00 135.0 / 5 = 27.00 27.0 + 32 = 59.00

带括号:9/5 = 1(整数除法)15.0 * 1 = 15.0,15.0 + 32 = 47.00

© www.soinside.com 2019 - 2024. All rights reserved.