gpt4 book ai didi

c - scanf ("%d", &i) 不会读取超过 10 位的数字

转载 作者:行者123 更新时间:2023-12-02 15:17:17 25 4
gpt4 key购买 nike

我正在尝试使用 scanf()%d 格式修饰符读取任意大小的整数。当输入整数的位数不超过 10 位时,此操作将按预期执行。但是,当我尝试输入 11 位或更多位的数字时,scanf("%d", &number) 的行为很奇怪。它似乎返回负值。例如读取12345678901时,赋给number的值也是-539222987

有人知道为什么会这样吗?也许 scanf("%d", &i) 读取的整数大小有限制?

谢谢!

最佳答案

在大多数情况下 C , int 通常 32 位,它只会存储 2147483647 之间的数字和 -2147483648 .不支持任何超出限制的数字。

如果你想存储更长的数字,你可以查看long long 通常 64 位,可以存储在 9223372036854775807 之间和 -9223372036854775808 .

你也可以让你的类型unsigned因此它不会存储负数并将所有值分配给正数。

如果你想绝对控制你的数据类型的位数,你可以使用 <inttypes.h> . int64_t会给你 64 位的 signed值和 uint64_t会给你 64 位的 unsigned值(value)观。

大部分数据类型的限制可以看 <limits.h>

关于c - scanf ("%d", &i) 不会读取超过 10 位的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522275/

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