gpt4 book ai didi

c++ - 将无符号字符数组转换为整数

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:34 26 4
gpt4 key购买 nike

据我所知,在C语言中,数组是逐个元素存储在内存中的。 (即元素 0、元素 1、元素 2、...、元素 n)。我正在尝试使用以下代码查看:

unsigned char a[] = { '\1' , '\2', '\3' ,'\4' };  
printf("%d\n", (int*) a);

由于unsigned char是1个字节,一个整数是4个字节;我认为它必须打印值:

00000001 00000010 00000011 00000100 = 2^2 + 2^8 + 2^9 + 2^17 + 2^24 = 16909060

但是,当我运行这个程序时,每次试验都会产生不同的结果。

我在这里错过了什么?

最佳答案

你可能想使用*(int *)a,否则你只是打印一个地址。

但是,这将调用实现定义的行为:

  • 您将根据 endianness 得到不同的结果。您的平台。
  • 根据平台的不同,char 数组可能未正确对齐以作为 int 读取。
  • 编译器可能会根据您永远不会通过 int * 读取 char 数组的假设执行时髦的优化 - 您正在破坏所谓的 严格的别名规则。

关于c++ - 将无符号字符数组转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com