2011-gre-cs-practice-book.pdf/Q40 — различия между версиями
Материал из DISCOPAL
Urmat A (обсуждение | вклад) |
Urmat A (обсуждение | вклад) |
||
Строка 27: | Строка 27: | ||
=== Ответы === | === Ответы === | ||
− | + | Статическая область видимости - Динамическая область видимости | |
# 3 2 3 2 | # 3 2 3 2 | ||
# 3 3 2 2 | # 3 3 2 2 |
Версия 17:27, 19 декабря 2024
Задача зарезервирована: Urmat A 15:01, 19 декабря 2024 (UTC)
Вопрос: Q40-08c765
Рассмотрим следующий псевдокод:
int i main () { i = 3 S () R () } void S () { print i // prints the value of i on the current line of output print " " // prints a blank space on the current line of output } void R () { int i i = 2 S () }
Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [1] )
Ответы
Статическая область видимости - Динамическая область видимости
- 3 2 3 2
- 3 3 2 2
- 3 3 2 3
- Правильный ответ: 3 3 3 2
- 3 3 3 3
Объяснение
Исходники — вопрос 40 на 34 странице книги «2011-gre-cs-practice-book.pdf»
- В статической области определения S() будет искать i в своей области видимости. Поскольку S() не имеет своей локальной переменной i, она будет использовать глобальную i, которая равна 3. Поэтому будет 3 3.
- В динамической области определения, когда S() вызывается из R(), она будет искать i в контексте последнего вызова функции. Поскольку R() имеет локальную переменную i, равную 2, S() увидит это значение. Поэтому будет 3 2. Решено: Urmat A 17:27, 19 декабря 2024 (UTC)