|
|
1
7
用途:
因为数字会被表示出来 作为char,必须使用sizeof(char) 而不是sizeof(int)。 |
|
2
3
不完全是,你只需要几个字符,所以
但是,对于易于维护和可移植的代码,您应该具有如下特性:
这有许多优点:
|
|
|
3
1
一种方法(不一定推荐)是使用
例如,如果在分配内存之前打印数字(无论出于什么原因),则可以使用
另一个例子是
使用这些函数的一个最大优点是,如果您决定更改数字的格式(前导0、填充空格、八进制输出、长整型等),您将不会超出内存。
如果您的GNU扩展到
|
|
|
4
0
注意:size of(int)给出了byes中类型的大小。sizeof(int)==4如果int是32位,8如果是64位。 |
|
|
5
0
我认为获得整数的十进制表示的最大长度的正确公式是(floor(log10(int_max))+1);您也可以这样滥用预处理器:
,这也避免了堆分配。您可能希望使用snprintf来获得更好的安全性,尽管使用这种方法不必这样做。 另一个类似的技巧是创建这样的函数:
如果编译器足够聪明,它可以完全清除 笨蛋 来自已编译代码的var,否则最好声明var为静态变量,以避免每次调用函数时重新初始化它。 |
|
|
6
0
有符号的安全近似
相当于
这将计算位数-如果为以空结尾的字符串分配空间,则在两个数字中都添加一个以说明终止符。
本遗嘱
轻微地
高估非常长类型所需的空间(在不寻常的情况下也会高估
|