指针错误的返回值

时间:2014-01-20 22:17:45

标签: c++ pointers

有谁知道为什么y = 11? 它是21/12 = 1.75,但它返回11。

int i=3, j=5, *p = &i, *q = &j, *r;
int y = 7 **p / *q + 7;

5 个答案:

答案 0 :(得分:3)

7 * *p / *q + 7
7 * (3) / (5) + 7   Substitution
21 / 5 + 7
4 + 7               Integer Division
11

答案 1 :(得分:1)

操作顺序。 7 * 3/5 + 7是21/5 + 7.由于你正在使用整数,那就是4 + 7 = 11.

答案 2 :(得分:1)

运算符优先级 - 使用括号表示评估顺序:

int y = ((7 * *p) / *q) + 7;
  

7 * 3/5 = 4

     

4 + 7 = 11

答案 3 :(得分:1)

所有操作都以整数形式完成,而不是浮点操作。

让我们分开吧

7 * (*p) / (*q) + 7
7 *  *&i /  *&j + 7
7 *   3  /   5  + 7
21       /   5  + 7
4               + 7
11

答案 4 :(得分:1)

正确,你的表达式评估为:

(7* 3)/5  + 7

= 4 + 7

等于11