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

学习 时间:2026-04-03 09:58:49 阅读:9712
这段程序的RAND_MAX为什么要加1.0呢?#include main() { int i,j; for(i=0;i

最佳回答

眯眯眼的过客

从容的枫叶

2026-04-03 09:58:49

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

最新回答共有2条回答

  • 成就的爆米花
    回复
    2026-04-03 09:58:49

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

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

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