c - 无符号字符数组的输出

标签 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

最佳答案

在小端系统上,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。

关于c - 无符号字符数组的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236419/

相关文章:

c - 生成漂亮的和/或更少的系统密集型测量点

arrays - 使用 SwiftyJSON 读取 JSON 响应的子节点

string - 使用Delete()时发生访问冲突00000000;

java - Java 尝试判断字符串是否只包含字母

C 中的字符比较

c++ - 如何在 C++ 中部分初始化 C 结构数组?

c - vxWorks 警告 : variable <task> is used before its value is set

char 指针在两种不同情况下的行为不同

java - 将文本文件中的输入读取到数组列表中

java - ArrayList 声明之间的区别