2014-01-20 3 views
-1

Кто-нибудь знает, почему y = 11? Это 21/12 = 1,75, но тем не менее она возвращает 11.Указатель Неверная возвращаемая стоимость

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

Это код из моего школьного учебника :) –

+0

@JesseStruyvelt - Я надеюсь, что бумага поглощает. Это единственное использование для этой книги как туалетной бумаги –

ответ

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

Ничего себе, не знаю, как я мог это забыть. благодаря –

1

Порядок операций. 7 * 3/5 + 7 является 21/5 + 7. Так как вы используете Интс, это 4 + 7 = 11.

1

Приоритет операторов - с помощью скобок для обозначения порядка оценки:

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

7 * 3/5 = 4

4+ 7 = 11

1

Все операции выполняются в виде целого числа, а не как плавающий р операции.

Давайте это обособленно

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

его правильно, ваше выражение в:

(7* 3)/5 + 7 

= 4 + 7 

, который равен 11

Смежные вопросы