如何在c中创建填充0的整数数组?
我正在尝试创建一个指定大小为“size”的int数组。数组的每个成员都应该填充32个0(因为这是无符号int可以接受的最大值)。我该怎么做?现在我有:如何在c中创建填充0的整数数组?,c,C,我正在尝试创建一个指定大小为“size”的int数组。数组的每个成员都应该填充32个0(因为这是无符号int可以接受的最大值)。我该怎么做?现在我有: unsigned int *new_array = (unsigned int*) malloc (sizeof(unsigned int) * size); for (j = 0; j < size; j++) { new_array[j] = 0; } unsigned int*新数组=(unsigned int*)mallo
unsigned int *new_array = (unsigned int*) malloc (sizeof(unsigned int) * size);
for (j = 0; j < size; j++) {
new_array[j] = 0;
}
unsigned int*新数组=(unsigned int*)malloc(sizeof(unsigned int)*size);
对于(j=0;j
然而,当我打印新的_数组[0]时,我得到的是0,而不是00000000000000000000。按位操作在这里有用吗
printf
不会输出前导零。使用%08x
打印带前导零的8位十六进制数(32位)calloc
来获得一个零初始化数组,这将允许您跳过for
循环malloc
的返回值尝试
printf(“%032u”,新的_数组[0])代码>一个int
只能保存一个int
。您可能可以将32位编码为int(如果目标上的int为32位),但是如果您将其打印为int,您将得到一个int,而不是32位。使用calloc
而不是带有loophm的malloc会更简单(也更有效)…我还没有学会这一点,但我想现在是时候了。谢谢@M.M.See提供了一个打印二进制序列的短函数,所以,即使程序没有显示它,int的每个元素实际上都是用零填充的?那么,即使我的代码打印不正确,它也是正确的吗。是的,它充满了零。2.它是正确的。您要求使用int
的十进制表示形式,这就是它给您的结果。