无符号字符数组的输出

时间:2019-12-08 14:32:01

标签: c arrays char unsigned

我有以下代码:

int main ( void ) {
   unsigned int array [] = { 298 , 0 x1A2A3A4A };
   unsigned char *p = ( unsigned char *) array ;
   for (int i = 4; i < 8; i ++) {
       printf ("% hhX ", p[i]) ;
     }
   printf ("\ nThe Answer is %d or %d!\n", p[0] , p [6]) ;
   return EXIT_SUCCESS ;

 }

我不明白输出:

4A 3A 2A 1A
The Answer is 42 or 42

1 个答案:

答案 0 :(得分:0)

在小端系统上,8字节array的布局为

Position:     0 |  1 |  2 |  3 |  4 |  5 |  6 |  7
Value (Hex): 2A | 01 | 00 | 00 | 4A | 3A | 2A | 1A

您的循环按它们在数组中出现的顺序打印最后4个字节。最后的printf在0和6位置打印值,它们均为0x2A或十进制的42。