6 ответов:
целые числа по своей сути конечны. Ближе всего вы можете получить, установив
aдоintмаксимальное значение:#include <limits> // ... int a = std::numeric_limits<int>::max();что будет
2^31 - 1(или2 147 483 647) еслиintимеет ширину 32 бита на вашей реализации.если вы действительно нужна бесконечность, используйте тип числа с плавающей запятой, например
floatилиdouble. Затем вы можете получить бесконечность с:double a = std::numeric_limits<double>::infinity();
целые числа конечны, поэтому, к сожалению, вы не можете установить его на истинную бесконечность. Однако вы можете установить его на максимальное значение int, это будет означать, что он будет больше или равен любому другому int, т. е.:
a>=b- это всегда правда.
вы бы сделали это с помощью
#include <limits> //your code here int a = std::numeric_limits<int>::max(); //go off and lead a happy and productive lifeЭто будет равно 2,147,483,647
Если вам действительно нужно истинное "бесконечное" значение, вам придется использовать double или float. Тогда вы можете просто сделать это
float a = std::numeric_limits<float>::infinity();дополнительные объяснения числовых пределов можно найти здесь
Удачи В Кодировании!
Примечание: Как упоминалось в WTP, если абсолютно необходимо иметь int, который является "бесконечным", вам придется написать класс-оболочку для int и перегрузить операторы сравнения, хотя это, вероятно, не нужно для большинства проектов.
intпо своей сути конечна; нет никакого значения, которое удовлетворяет вашим требованиям.Если вы готовы изменить тип
b, хотя, вы можете сделать это с помощью оператора переопределения:class infinitytype {}; template<typename T> bool operator>(const T &, const infinitytype &) { return false; } template<typename T> bool operator<(const T &, const infinitytype &) { return true; } bool operator<(const infinitytype &, const infinitytype &) { return false; } bool operator>(const infinitytype &, const infinitytype &) { return false; } // add operator==, operator!=, operator>=, operator<=... int main() { std::cout << ( INT_MAX < infinitytype() ); // true }
вы также можете использовать INT_MAX:
http://www.cplusplus.com/reference/climits/
Это эквивалентно использованию numeric_limits.
это сообщение для меня в будущем:
просто использовать:
(unsigned)!((int)0)Он создает максимально возможное число в любой машине, назначая все биты 1s( единицы), а затем приводит его к unsigned
еще лучше
#define INF (unsigned)!((int)0)а затем просто использовать INF в коде
int мин и Макс значения
Int -2,147,483,648 / 2,147,483,647 Int 64 -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807
Я думаю, вы могли бы установить a равным 9,223,372,036,854,775,807 но это должно быть int64
Если вы всегда хотите, чтобы a был теркой, что b, почему вам нужно это проверить? просто установите его, чтобы быть правдой всегда
Comments