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

问题描述 投票:1回答:3

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

#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 parentheses multiplying
3个回答
2
投票

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


1
投票

解释很容易

没有括号: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


0
投票

这里

1)用户输入*(9/5)+32;

    15.0*(1)+32   //1.8 goes to 1 because integer division
    15.0+32
    47.0

2)用户输入* 9/5 + 32;

    15.0*9/5+32
    135.0/5+32
    27.0+32
    59.0  
© www.soinside.com 2019 - 2024. All rights reserved.