(3 *-* p /(* q)+7)= 6它是如何工作的?

时间:2018-12-12 11:08:18

标签: c pointers

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,因为是整数,有人可以帮忙吗? >

2 个答案:

答案 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