RAND_MAX が unsigned int 変数内に収まるかどうかを判断しようとしています。C99 標準を調べたところ、RAND_MAX の値が少なくとも 32767 であることが保証されていることがわかりました。RAND_MAX が int 値に展開されることはわかっていますが、それが long int であるかどうかはわかりません。現在、unsigned long int 変数を使用していますが、ソース コードを単純化して unsigned int 変数を使用したいと考えています。
要約すると、この前提ステートメントは C99 標準に当てはまりますか?
RAND_MAX <= UINT_MAX <= ULONG_MAX
また、RAND_MAX が明示的に UINT_MAX または ULONG_MAX よりも小さい (つまり等しくない) かどうか。RAND_MAX の値がメルセンヌ素数であることが多いことは認識していますが、これが基準かどうかはわかりません。