나는 int a
"무한대"와 같을 필요가있다. 이것은
int b = anyValue;
a>b
항상 사실입니다.
이를 가능하게하는 C ++의 기능이 있습니까?
Max Value
언어 구현 일뿐 입니다.
a>b
:) 체크
나는 int a
"무한대"와 같을 필요가있다. 이것은
int b = anyValue;
a>b
항상 사실입니다.
이를 가능하게하는 C ++의 기능이 있습니까?
Max Value
언어 구현 일뿐 입니다.
a>b
:) 체크
답변:
정수는 본질적으로 유한합니다. 가장 가까운 것은 의 최대 값 으로 설정 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의 최대 값으로 설정할 수 있습니다. 이것은 다른 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에 대한 래퍼 클래스를 작성하고 비교 연산자를 오버로드해야하지만 대부분의 프로젝트에는 필요하지 않습니다.
max()
나 infinity()
수치의 종류를 알 수없는 경우 템플릿에서 당신은 사용해야합니다 +/-infinity()
IFF를 std::numeric_limits<T>::has_infinity
달리하고 min()
하고max()
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
}
std::numeric_limits<float>::infinity()
.
이것은 나에게 미래에 대한 메시지입니다.
다음을 사용하십시오. (unsigned)!((int)0)
모든 비트를 1 (1)에 할당하여 모든 컴퓨터에서 가능한 가장 큰 숫자를 생성 한 다음 unsigned로 캐스트합니다.
더 나은
#define INF (unsigned)!((int)0)
그런 다음 코드에서 INF를 사용하십시오.
#define INF ((unsigned) ~0)
에는 여기를보세요 .
int 최소 및 최대 값
정수 -2,147,483,648 / 2,147,483,647 정수 64 -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807
나는 당신이 9,223,372,036,854,775,807과 같도록 설정할 수 있다고 생각하지만 int64가 필요합니다.
당신이 항상 a가 더 강해지기를 원한다면 b 왜 그것을 확인해야합니까? 항상 사실로 설정하십시오.
cstdint
).
int
C ++ 의 의미 와 관련 유형을 설명합니다 .
float
무한대를 나타내는 값을 가진 s를 사용할 수 있습니다 .