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

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

Войти
Регистрация
Восстановить пароль
 
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 258
#1

Настройка компилятора VS 2008 на исключение переполнений - C++

30.01.2011, 13:09. Просмотров 763. Ответов 1
Метки нет (Все метки)

Например, программа для вычисления факториала последовательности натуральных чисел n.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
#include <iomanip>
using namespace std;
unsigned long long factorial(int); 
int main() 
{
 
    for (int i = 0; i <= 68; i++) 
cout << setw(3) << i << "! = " << factorial(i) << endl; 
    return 0; 
}
// Рекурсивное описание функции факториала 
unsigned long long factorial (int n) 
{ 
if (n <= 1) 
return 1; 
else 
return n * factorial(n - 1); 
}
При запуске VS 2008 на 21 шаге начинает выдавать неверный результат, а после 65 шага вообще выдаёт нули.

Понятно, что это происходит оттого, что результат вычисления не укладывается в пределах unsigned long long.
Но почему сначала пишет всякую чушь, а потом нули? Почему, например не сразу нули, или не всё время "чушь"?

И самое главное, подскажите, кто знает, как от этого избавиться. Нельзя ли как-то так настроить компилятор Visual Studio 2008 (без обработки ошибок исходном коде), чтобы после компиляции вместо "чуши" и нулей при переполнении выдавал оповещение об ошибке.

Если компилятор настроить нельзя, то как "поймать" эту ошибку самому, что где и как прописывать в коде.

Заранее благодарен, всем, кто не поленился дочитать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2011, 13:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Настройка компилятора VS 2008 на исключение переполнений (C++):

настройка компилятора - C++
ребят как настроить компилятор чтобы работать с графикой ? вроде бы нужно чтото прописать в derectories ... помогите плиз (компилятор turbo...

Настройка параметров компилятора - C++
Здравствуйте. В Visual Studio 2008 есть компилятор cl.exe Для него можно выставить параметр /openmp, подключающий openmp Подскажите...

Настройка MS VS 2008 - C++
Привет всем! Просмотрев многие темы на этом форуме и не только я увидел, что некоторые решение проблем полагают в изменение настроек...

Как можно защитить программу от переполнений буфера? - C++
Я тут немного баловался со своей программой,я работаю в Code::Blocks,там свой эмулятор терминала. Программа принимает параметры int...

Настройка компилятора - Turbo Pascal
Привет. Подскажите как вернуть все настройки по умолчанию?

Настройка компилятора - Objective-C
Искал подходящий компилятор Objective-C под винду. Скачал и установил Dev C++. Как я понял, должен подойти. Но настроить его, чтоб...

1
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.01.2011, 14:04 #2
Цитата Сообщение от LVV Посмотреть сообщение
Но почему сначала пишет всякую чушь, а потом нули? Почему, например не сразу нули, или не всё время "чушь"?
undefined behavior, или хрен его знает
Цитата Сообщение от LVV Посмотреть сообщение
И самое главное, подскажите, кто знает, как от этого избавиться.
кроме программного контроля недопущения переполнения нет способов, кроме машинного, определения переполнения
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2011, 14:04
Привет! Вот еще темы с ответами:

Настройка компилятора - Delphi
Скажите какие чек боксы надо отключить или включить чтобы программа работала самостоятельно от delphi 2009

При запуске программы ошибка компилятора Visual Studio 2008 - Visual C++
При запуске программы компилятор Visual Studio 2008 пишет, что не может поключить некоторые библиотеки using как добавить эти библиотеки ...

Настройка 64 битного компилятора - C++ Qt
Друзья, Создаю приложение которое должен работать с большими массивами с памятью более 4 гб. щас у меня стоит компилятор mingw32. но 32...

Настройка компилятора в QtCreator 2.6.1 - C++ Qt
Я скачал Qt5 for Windows (http://releases.qt-project.org/qt5/5.0.0/qt-windows-opensource-5.0.0-msvc2010_32-x86-offline.exe). Инсталлер...


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

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

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