为什么RAND_MAX是C ++中的一个宏?

时间:2010-09-30 14:24:44

标签: c++ random

为什么不是const?我认为这不是一个明确的C ++方式。 也许有更多的C ++方法来生成随机数,是吗?

3 个答案:

答案 0 :(得分:11)

RAND_MAX来自C标准库,它被定义为宏。

在C中,宏是定义清单常量的方式。 const对象实际上不是C中的常量(这意味着const对象不能在常量表达式中使用。)

答案 1 :(得分:6)

如果您正在寻找“更多C ++方式”,可以使用boost::random

无论如何,RAND_MAX是一个宏,因为它来自“遗留C”rand()函数,其中使用预处理器符号来声明常量是事实上的标准。

答案 2 :(得分:1)

这是一个宏,因为它来自C,它长期以来一直是宏。

  1. 随机提升将是另一种选择。
  2. TR1的随机数生成类将是另一个。
  3. 与大多数TR1不同,PRNG类正在针对C ++ 0x进行全面修订。