在如何在C语言中将int转换为字符串的一个回答(及其评论)中,提供了以下解决方案。请参考此处。
char str[ENOUGH];
sprintf(str, "%d", 42);
在评论中,caf提到可以通过以下方式在编译时确定ENOUGH
:
#define ENOUGH ((CHAR_BIT * sizeof(int) - 1) / 3 + 2)
我得到了+ 2
,因为您需要能够显示减号和空终止符,但其他部分的逻辑是什么?具体来说,CHAR_BIT
是什么?
CHAR_BIT
决定了int
中的位数:O 我以为它只是关于char中位数的说明。 - Gerhard Burgerint
位宽(例如18)会失败。如果用于char
,如((CHAR_BIT * sizeof(char) - 1) / 3 + 2)
,也会失败。建议使用((CHAR_BIT * sizeof(whatever_signed_integer_type) + 1) / 3 + 2)
。 - chux - Reinstate Monica