我想確定RAND_MAX是否可以放入一個unsigned 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
這[鏈接](http://stackoverflow.com/questions/10708433/rand-max-macro-signed-or-unsigned)拋出我,因爲它似乎暗示系統可以實現一個rand函數返回無符號並且具有RAND_MAX的文字無符號值。 –
@VilhelmGray:'rand'總是返回'int',並且我沒有在鏈接中看到任何暗示的東西。雖然由於某些原因某些系統爲'RAND_MAX'使用了無符號文字,但它們的值仍然是<= INT_MAX'。 – interjay