Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
art_h4rd
7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
Завершенные тесты: 1
1

Отслеживание переполнения

15.03.2018, 23:07. Просмотров 604. Ответов 4
Метки нет (Все метки)

Привет. Подскажите пожалуйста как ловить переполнение переменной типа size_t ( unsigned int )... например, когда человек передает в конструктор число меньше 0
Псевдокод:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
class A
{
public:
    A(const size_t n) : num(n) 
    {
 
    }
private:
    size_t num{};
};
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2018, 23:07
Ответы с готовыми решениями:

Переполнения безопастны?
Насколько безопасна строчка: for(unsigned int b(UINT_MAX); ++b != UINT_MAX;) или такое нужно...

Защита от переполнения
Ребят помоги создать защиту от переполнения через функцию scanf_s и убрать нолики в конечном...

Флаг переполнения
Доброго времени суток! Подскажите, как проверить какую-либо определенную переменную типа double...

СИ++ и контроль переполнения
Можно ли как-нибудь в VS включить контроль переполнения при математических вычислениях? Чтоб,...

Ошибка переполнения буфера
При первом запуске програма работает, после второго появляеться ошибка переполнения буфера. В чем...

4
nonedark2008
1302 / 964 / 297
Регистрация: 28.07.2012
Сообщений: 2,665
15.03.2018, 23:33 2
Цитата Сообщение от art_h4rd Посмотреть сообщение
ловить переполнение переменной типа size_t
Переполнение нужно ловить до того, как оно произойдет. Т.е. заранее проверяй, что ты собираешься передавать в функцию.
Или замени size_t на int и проверяй уже в конструкторе.
0
art_h4rd
7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
Завершенные тесты: 1
15.03.2018, 23:46  [ТС] 3
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Переполнение нужно ловить до того, как оно произойдет. Т.е. заранее проверяй, что ты собираешься передавать в функцию.
Или замени size_t на int и проверяй уже в конструкторе.
Если в main все так же будет size_t, то раньше некуда. Думаю замена - не решение. Нашел один способ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public:
    A(const size_t n) : num(n) 
    {
        if(int(n) < 0)
        {
              throw;
        }
    }
private:
    size_t num{};
};
0
nonedark2008
1302 / 964 / 297
Регистрация: 28.07.2012
Сообщений: 2,665
16.03.2018, 08:15 4
Цитата Сообщение от art_h4rd Посмотреть сообщение
Нашел один способ
Так себе решение, проще все на int везде заменить.
0
nmcf
6540 / 5763 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
16.03.2018, 08:41 5
art_h4rd, здесь смотри: Запретить неявное приведение
0
16.03.2018, 08:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2018, 08:41

Ошибка переполнения массива
Здравствуйте. Задача легкая,нужно создать массив из 1000000 элементов,и найти 1000001,и вывести...

Проверка переполнения double
Добрый день! Подскажите пожалуйста, где можно почитать теорию. Нужно решить задачу, написать...

Как отловить переполнения?
Есть проект dll, в в нём экспортируемая функция, возвращающая BOOL, требуется при переполнении...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.