Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
#1

"Неопределенное поведение" при выходе вводимых данных за пределы массива - C++

20.11.2013, 04:22. Просмотров 287. Ответов 6
Метки нет (Все метки)

В условии задачи написано, что функция не проверяет индексы. И если введенные пользователем входные данные будут выходить за пределы массива, то поведение не определено.

Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:22     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Посмотрите здесь:

Warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++
C++ Неопределенное поведение пользовательской функции
Упорядочивание "пузырьком" массивов, вводимых пользователем C++
C++ Неопределенное поведение в Debug и Release
C++ Неопределенное поведение при приведении типа
C++ Создание массива, неопределенное поведение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
20.11.2013, 05:44     "Неопределенное поведение" при выходе вводимых данных за пределы массива #2
Компилятор тут не при чём.
Выдаст программа или оболочка (командный интерпертатор) сообщение об ошибке (в лучшем случае) или программа (а может быть и ОС) зависнет. А что именно из сего произойдёт "не предопределено".
takeneo
3 / 3 / 3
Регистрация: 16.08.2013
Сообщений: 22
20.11.2013, 05:48     "Неопределенное поведение" при выходе вводимых данных за пределы массива #3
Не знаю кто конкретно это делает компилятор или ос, но когда много ошибок вылезает segmentation error.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
20.11.2013, 11:26     "Неопределенное поведение" при выходе вводимых данных за пределы массива #4
Nikcharn, Именно так.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.11.2013, 11:43     "Неопределенное поведение" при выходе вводимых данных за пределы массива #5
Цитата Сообщение от Nikcharn Посмотреть сообщение
Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
Да не нада проверять просто исключение вылови, если вылетит за пределы и обработай try{}catch(...){} .
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива #6
Цитата Сообщение от ninja2 Посмотреть сообщение
просто исключение вылови
Исключение можно поймать, если оно вообще было. Для обычного массива никаких исключений не генерируется при выходе за пределы. Да и для контейнерных классов только в вариантах с at().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Еще ссылки по теме:

C++ Не могу вывести "функции" за пределы главной программы
C++ Почему работает программа при выходе за пределы массива?
C++ Ошибка о выходе за пределы массива
Warning C4244: return: преобразование "double" в "float", возможна потеря данных C++
Странное поведение при работе со строками: почему программа выводит 8, если в input "МАКС"? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива #7
Цитата Сообщение от ninja2 Посмотреть сообщение
Да не нада проверять просто исключение вылови
Выход за пределы вызовет падение программы или порчу данных, либо еще что-то, а не исключение!
Yandex
Объявления
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Ответ Создать тему
Опции темы

Текущее время: 07:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru