int a=98, b=10;
float c;
c=a/b;
输出:c = 9
我知道因为隐式类型转换,c
值是9而不是9.8然后我遇到了这个问题:
int a,b,c,d;
a=40;
b=35;
c=20;
d=10;
printf("%d",a*b/c-d);
输出:60
现在,如果我们看到方程的优先级是从右到左,并且根据BODMAS规则b / c(35/20)将首先执行35/20 = 1.75然后隐式转换为整数使其为1然后休息将跟进答案必须是30但输出是60这是正确的答案。你能解释一下为什么吗?
答案 0 :(得分:1)
C中*
和/
中C的运算符优先级是从左到右:http://en.cppreference.com/w/c/language/operator_precedence
首先完成a*b
。这相当于写((a*b)/c)-d
。
答案 1 :(得分:0)
因此,您的执行将遵循从左到右执行/
和*
:
((40 * 35) / 20) - 10 = ((1400) / 20) - 10 = (70) - 10 = 60