这段程序的RAND-MAX为什么要加1.0呢?

学习 时间:2026-08-15 18:12:41 阅读:5224
这段程序的RAND_MAX为什么要加1.0呢?#include main() { int i,j; for(i=0;i

最佳回答

愉快的裙子

生动的火车

2026-08-15 18:12:41

难道你的int 是16位的?……神啊……RAND_MAX 的宏定义是0x7fff就是 16位有符号整形的最大正值32767。你加上1以后变成了 0x8fff最高位为1,换成16位int 就是 -(32768 - 4095)。所以是负数。但是如果你加1。0,RAND_MAX+1。0就会转换成浮点型,浮点型应该是32或更大。所以是正数。

最新回答共有2条回答

  • 热情的日记本
    回复
    2026-08-15 18:12:41

    难道你的int 是16位的?……神啊……RAND_MAX 的宏定义是0x7fff就是 16位有符号整形的最大正值32767。你加上1以后变成了 0x8fff最高位为1,换成16位int 就是 -(32768 - 4095)。所以是负数。但是如果你加1。0,RAND_MAX+1。0就会转换成浮点型,浮点型应该是32或更大。所以是正数。

上一篇 争执和危急的近义词是什么?

下一篇 介绍一些最新的好听的欧美英文歌?