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

Проверка арифметического переполнения для int - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Оператор return; http://www.cyberforum.ru/cpp-beginners/thread32210.html
В коде одного примера встретился оператор return; Который просто ничего не возвращает. Вот часть кода: void PartList::Iterate(void (Part::*pFunc)()const)const { if (!pHead) { return; } PartNode *pNode=pHead; do (pNode->GetPart()->*pFunc)();
C++ Как увидеть результат выполнения программы в Dev-C++ 4.9.9.2 ? И ещё, когда запускаю exe-файл, вместо нормального текста какая-то абракадабра на русском языке. Можно это исправить? Только начал изучать программирование, если можно, отвечайте общедоступным языком. Если смогите, помогите. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread32172.html
Переменная в register, операция >>, во что компилится? C++
Если объявлена переменная register unsigned int i=100; и затем мне надо выполнять операцию >>1 (деление на 2), в цикле, дак вот, если написать просто i=i>>1; эта строка скомпилится именно в sar xX, 1, или какую-то более сложную последовательность, с присваиванием и т.д. ?? (Просто, i++ будет инкремент, а i>>1 - ничего не будет, значение i останется прежним. А как надо?) Заранее...
C++ Ограничения для структуры if
у меня прога некорректно работает. есть подозрения на структуру if - в ней должно выполнятся 5 условий if ((f_card==1)&&(f_card==1)&&(f_card==1)&&(f_card==1)&&(f_card==1)) существуют ли ограничения для кол-ва условий в структуре if и может ли из-за большого кол-ва условий давать сбой?
C++ Составить алгоритм и программу http://www.cyberforum.ru/cpp-beginners/thread32114.html
Составить алгоритм и программу для решения следующей задачи. Дано два массива X(5),Y(7). Составить из них один массив, разместив элементы произвольным образом. Результат вывести к печати. X=(4, -3, 8, 2, 7); Y=(-5, 12, 9, 0, -1, 6, 6)
C++ Задача на типы данных 1. Ввести натуральные числа n и m, и напечатать период десятичной дроби m/n, если дробь конечна (до 50 знаков после запятой), то период = 0 подробнее

Показать сообщение отдельно
NickA
 Аватар для NickA
35 / 34 / 2
Регистрация: 28.04.2009
Сообщений: 67
30.04.2009, 17:16     Проверка арифметического переполнения для int
C++
1
2
3
4
5
6
7
8
9
10
Int Int::operator+(Int d2)//метод перегрузки сложения
{
    long double m = n+d2.n; // << -- нужно сперва преобразовать n и d2.n к типу long double, после чего выполнять действие, если этого не делать, то операция выполняется с переполнением, например (int)2147483648+(int)1=(int)-2147483647
    if(m > 2147483648.0L || m < -2147483647.0L)
    {
        cout << "Perepolneneie!";
        exit(1);
    }
    else return Int(int(m));
}
Ну скажем так:
C++
1
2
3
4
5
6
7
8
9
10
Int Int::operator+(Int d2)//метод перегрузки сложения
{
    long double m = (long double)n+(long double)d2.n; 
    if(m > 2147483648.0L || m < -2147483647.0L)
    {
        cout << "Perepolneneie!";
        exit(1);
    }
    else return Int(int(m));
}
в остальных операциях аналогично
 
Текущее время: 23:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru