[英]Converting unsigned char array to an integer
据我所知,在C语言中,数组是逐个元素存储在内存中的。 (即元素0,元素1,元素2,...,元素n)。 我正在尝试通过以下代码进行查看:
unsigned char a[] = { '\1' , '\2', '\3' ,'\4' };
printf("%d\n", (int*) a);
由于无符号字符为1个字节,整数为4个字节; 我认为它必须打印出值:
00000001 00000010 00000011 00000100 = 2 ^ 2 + 2 ^ 8 + 2 ^ 9 + 2 ^ 17 + 2 ^ 24 = 16909060
但是,当我运行该程序时,它会为每个试验生成不同的结果。
我在这里想念什么?
您可能要使用*(int *)a
,否则您只是在打印地址。
但是,这将调用实现定义的行为:
char
数组可能未正确对齐以读取为int
。 int *
读取char
数组-这违反了严格的别名规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.