Назад к вопросам
JuniorТеорияОчень часто
Что произойдёт при запуске этой программы?
#include <iostream>
int* positive(int* p) {
return *p > 0 ? p : nullptr;
}
int main() {
int x = -7;
std::cout << *positive(&x) << '\n';
}Неопределённое поведение: positive вернёт nullptr, а * его разыменует
- Ждать гарантированного падения: разыменование
nullptr— неопределённое поведение, и стандарт не обещает ни падения, ни другого исхода. - Ждать ошибку компиляции: компилятор не проверяет, какой указатель может оказаться
nullptr, и программа собирается без ошибок.
- Как изменить
main, чтобыxпечаталась, только еслиpositiveне вернулаnullptr? - Почему ссылка не подойдёт как тип результата
positive?