C十六进制存储器、显示器和;操纵

C十六进制存储器、显示器和;操纵,c,formatting,hex,C,Formatting,Hex,下面是我声明整数数组的方式: int registers[16]; 这就是我填充数组的方式: void fill_registers() { registers[0] = 0 ; registers[1] = 0x11111111; registers[2] = 0x22222222; registers[3] = 0x33333333; registers[4] = 0x44444444; registers[5] = 0x55555555; registers[6] = 0x666666

下面是我声明整数数组的方式:

int registers[16];
这就是我填充数组的方式:

 void fill_registers()
{
registers[0] = 0 ; registers[1] = 0x11111111; registers[2] = 0x22222222;
registers[3] = 0x33333333; registers[4] = 0x44444444; registers[5] = 0x55555555;
registers[6] = 0x66666666; registers[7] = 0x77777777; registers[8] = 0x88888888;
registers[9] = 0x99999999; registers[10] = 0xAAAAAAAA; registers[11] = 0xBBBBBBBB;
registers[12] = 0xCCCCCCCC; registers[13] = 0xDDDDDDDD; registers[14] = 0xEEEEEEEE;
registers[15] = 0xFFFFFFFF;
}
这就是我以十六进制格式在用户处打印它们的方式

void print_all_registers()
{int i = 0 ;
    for(i= 0 ;i < 16 ; i++)
    {
        printf("REG %d : %x \t %d \n ", i, registers[i],registers[i]);
    }
}

这将导致值为2,而它应该类似于11111113。

您没有显示足够的代码。但要0填充一个值,请执行以下操作:

printf("REG %d: %08x\n", i, registers[i]);

还需要更多的代码,谢谢,我尝试了类似的东西,但方法不对,非常有帮助:)你是如何声明
寄存器
数组的?你的代码。我建议您尽可能提高编译器的警告级别。。。进行干净的编译:没有错误(当然!)或警告。有负片打印出来,所以不能正确转换负片的问题是未定义的行为。我已经使用
%d”
打印了一个
无符号的
值。转换说明符中的类型与值的类型不匹配。我应该用
“%u”
来代替。
printf("REG %d: %08x\n", i, registers[i]);