gpt4 book ai didi

c - 生成 10 位有符号整数

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:09 25 4
gpt4 key购买 nike

这一行 printf ("Random[%d]= %u\n", i, rand ()); 生成一个随机整数,大部分是 1 位,但是当执行 printf ( "Random[%d]= %u\n", i, rand ()%1000000); 生成6位int,

当尝试生成 10 位整数时,出现错误“警告:格式‘%u’需要‘unsigned int’类型的参数,但参数 3 的类型为‘long long int’[-Wformat]”。

那么有没有办法生成一个随机的 10 位有符号整数???

最佳答案

您可能已将 sa "long long"或 "unsigned long long"显式或隐式传递给 printf,这就是您收到警告的原因——但稍后会详细介绍;

生成一个 10 位随机数,你将需要切换到 64 位 -- so long long;

unsigned long long randomvalue;
randomvalue = random();
randomvalue <<= 16; // just picked 16 at random
randomvalue ^= random(); // you could also use + but not "or";
randomvalue %= 10000000000ULL;

你得到的警告是因为你传递了一个long long类型的值作为printf函数的第三个参数,但你仍然使用"%u " 作为格式,这使得 printf 期望类型为 unsigned int 的值。

要消除警告,请将格式更改为 "%lld"

它不会帮助你创建一个高于 2147483647 的十位数,因为 rand 返回一个 int,到目前为止是最多 32 位,即使在 64 位平台上也是如此。 2147483647 值从何而来?如果是带符号的 32 位整数,则为最高正值。

关于c - 生成 10 位有符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com