int i=3,j=5;
int *p, *q;
p = &i;
q = &j;
printf("%d\n", 3* -*p/(*q)+7);
编译器说结果是6,但是我不明白怎么办,因为对我来说,它应该是(-9/12)= -0.74或0,因为是整数,有人可以帮忙吗? >
答案 0 :(得分:6)
考虑到在the grammar of the C language中隐式编码的优先级规则,3* -*p/(*q)+7
为((3 * (-*p)) / (*q)) + 7
。
-9 / 5
的结果为-1
,因为/
在这里代表整数除法。
-1 + 7
的结果为6。
答案 1 :(得分:3)
由于operator precedence and associativity
3* -*p/(*q)+7
与
相同
(3 * - 3)/5 + 7
与
相同
-9/5 + 7
由于整数除法而与
相同
-1 + 7
与
6