Михаил Коршунов
Михаил Коршунов

Как на С++ узнать вышло число за пределы или нет?



Если число вышло за пределы, то оно все равно остается в диапазоне - принимает неверное значение.
Пример:
char [-128; 127]
char а = 203
При выводе на экран а = -48

потому что я не дописал ептвай мать.. . люди.. . или не люди...

Костя Napalm, я бы рад, но проверку нужно мне делать на всех диапазонах, даже на long double. Хотелось бы услышать какую-нить встроенную функцию С \ С++. Очень неохото писать модуль ассемблера на проверку флагов OF / CF

Николай Веселуха, у вас сделано так как предложил Коста Напалм, просто выбран больший тип, но это неверно. Мне надо писать проверку на все типы, даже на long double. А выше long double типа нет!!!

Костя Напалм, double имеет диапазон [1.7∙10^(–308)..1.7∙10^(+308)], если я введу a = 1.7∙10^(+308) и + 10 скажем, то в памяти а = 1.7∙10^(-308) - 9, т. е. за диапазон он не выходит!!!

Александра
Александра

#include
using namespace std;
int main() {
cout << "Code?.. ";
short control;
cin >> control;
if (control > SCHAR_MAX || control < SCHAR_MIN) cout << "\aError!";
else {
char ch = char(control);
cout << "Symbol = " << ch << endl << "Code = " << control << endl;
}
cin.get(); cin.get();
return 0;
}

ОК
Оксана Куницына

Если на экране табличка, где написано что-то про недопустимую операцию - значит вышло.
---
О, чуть-чуть определилось. Итак, определить, вышло ли за пределы - нельзя. А вот выйдет ли при очередной операции - можно, для этого нужно посравнивать результаты операции в более емком типе с соответствующими константами из climits
http://www.cplusplus.com/reference/clibrary/climits/

Егор Слукин
Егор Слукин

Зачем тебе это? не трогай эту сложную программу, она в жизни тебе не понадобится

ОЗ
Олег Захаркин

вопрос несколько не понятно поставлен... но может быть такое условие "если рассматриваемое число больше какого то предела (какого не понятно) то значит число вышло за предел, если же меньше значит ещё в диапазоне".

ЮС
Юлия Скрыпник

никак, после 999....будет 0 или минус, для большмх чисел используйте double
если же надо использовать имено int то можно попробовать unsigned long long
ну и всегда можно использовать стандартную библиотеку STL для очень больших чисел

Тогда добавь это число к double и проверь совпадает ли результат, если да то значит не превышает

double a = 5.0000;
int b = 5;
a += 5;
b += 5;
if (a == b)
printf("true");
и да, можно проверить не превышает ли результат максимальное значение, вариантов много, мне кажется

Похожие вопросы
C# Как узнать позицию наименьшего числа в массиве?
Как узнать, делится ли число на какое-то другое число? (Delphi)
Ввести два числа . Узнать, положительная ли их разность . Вывести сообщение .В паскалеПомогите, очень надо
как узнать какие имено числа сложили?
Как узнать какой процент у числа ?
Как узнать какой процент у числа?
Как узнать можно ли подобрать к нескольким делителям и остаткам подходящее число?
Как узнать 2е число в трехзначном числе?
Написать программу, которая узнает делится ли число на 10. Заранее спасибо)
Turbo Pascal, как узнать какое число выбрал random(100);