如何在c中创建填充0的整数数组?

如何在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

我正在尝试创建一个指定大小为“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*)malloc(sizeof(unsigned int)*size);
对于(j=0;j
然而,当我打印新的_数组[0]时,我得到的是0,而不是00000000000000000000。按位操作在这里有用吗

  • 在C语言中,二进制打印不受很好的支持,您需要在某种程度上支持。可能更容易打印十六进制
  • 默认情况下,
    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
    的十进制表示形式,这就是它给您的结果。