我正在使用itoa
查看此示例,并希望了解有关该语句的更多信息
char buffer [sizeof(int)*8+1];
作者为什么要[sizeof(int)*8+1]
?我理解sizeof(int)
,但为什么作者会*8+1
?
这是代码
#define _OPEN_SYS_ITOA_EXT
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [sizeof(int)*8+1];
printf ("Enter a number: ");
if (scanf ("%d",&i) == 1) {
itoa (i,buffer,DECIMAL);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,HEX);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,OCTAL);
printf ("octal: %s\n",buffer);
}
return 0;
}
我从here
得到了这个例子答案 0 :(得分:3)
如果你有一个int
,那么它的二进制数字是sizeof(int) * CHAR_BIT
。由于CHAR_BIT
通常为8,只要它是char buffer [sizeof(int)*8+1];
,就会生成一个缓冲区,可以存储二进制数字和终止空字符,这是有效的c字符串所需的。
答案 1 :(得分:-2)
这是C风格的字符串。这些字符串以空值终止。例如字符串&#34; Hello&#34;将包含字符&#39; H&#39;,&#39;&#39; l&#39;,&#39; l&#39;,&#39; o&#39;和&#39; \ 0&#39;。
+1代表空字符&#39; \ 0&#39;。