gpt4 book ai didi

c - ANSI-C : maximum number of characters printing a decimal int

转载 作者:太空狗 更新时间:2023-10-29 16:43:20 25 4
gpt4 key购买 nike

我想知道这是否是一种确定打印小数的最大字符数的简单方法 int .

我知道<limits.h>包含类似 INT_MAX 的定义表示 int 可以假设的最大,但这不是我想要的。

我希望能够做类似的事情:

int get_int( void )
{
char draft[ MAX_CHAR_OF_A_DECIMAL_INT ];

fgets( draft, sizeof( draft ), stdin );
return strtol( draft, NULL, 10 );
}

但是如何找到MAX_CHAR_OF_A_DECIMAL_INT的值呢?以便携和低开销的方式?

谢谢!

最佳答案

如果您假设 CHAR_BIT 为 8(POSIX 要求,因此对于任何针对 POSIX 系统以及任何其他主流系统(如 Windows)的代码,这是一个安全的假设),一个便宜的安全公式是 3*sizeof(int)+2。如果没有,你可以让它成为 3*sizeof(int)*CHAR_BIT/8+2,或者有一个稍微简单的版本。

如果您对它起作用的原因感兴趣,sizeof(int) 本质上是 INT_MAX 的对数(大致以 2^CHAR_BIT 为底)和转换不同底数的对数之间(例如以 10 为底数)只是乘法。特别地,3 是 256 的以 10 为底的对数的整数近似值/上限。

+2 是为了说明可能的符号和空终止。

关于c - ANSI-C : maximum number of characters printing a decimal int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536207/

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