RAND_MAX가 부호없는 int 변수 안에 들어갈 수 있는지를 확인하려고합니다. C99 표준을 살펴본 결과, RAND_MAX는 적어도 32767의 값을 가질 수 있다는 것을 알았습니다. RAND_MAX가 int 값으로 확장된다는 것을 알고 있지만, long int인지 확실하지 않습니다. 지금은 unsigned long int 변수로 작업하고 있지만 unsigned int 변수를 사용하도록 내 소스 코드를 단순화하고 싶습니다. 요약하면RAND_MAX는 <= UINT_MAX가 보장됩니까?
에서, C99 표준 마찬가지 이러한 가정 문이다 또한
RAND_MAX < = UINT_MAX < = ULONG_MAX
, RAND_MAX (즉 같지 않음에) UINT_MAX 또는 ULONG_MAX보다 명확 이하이다. RAND_MAX의 가치는 종종 메르 센 소수이지만, 이것이 표준인지 확실하지 않습니다.
@WhozCraig * 정수 상수 표현 *은 값이'int' 내부에 들어 있다는 것을 의미하지 않습니다. – ecatmur
이 시스템은 서명되지 않은 함수를 구현할 수 있음을 암시하는 것처럼 보이기 때문에이 [link] (http://stackoverflow.com/questions/10708433/rand-max-macro-signed-or-unsigned) RAND_MAX에 대한 문자없는 부호없는 값을가집니다. –
@VilhelmGray :'rand'는 항상'int'를 반환합니다. 그렇지 않으면 그 링크에서 뭔가를 제안하지 않습니다. 어떤 시스템은 어떤 이유로 RAND_MAX에 부호없는 리터럴을 사용하지만, 그 값은 여전히 <= INT_MAX가됩니다. – interjay