gpt4 book ai didi

c - 将数组中的两个相邻字符存储到一个int中

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:50 25 4
gpt4 key购买 nike

我有这个字符数组

char array[] = {1,2,3};     //FL, FH, Size

我正在尝试使用指针访问它,以便将 FLFH 值放在一起,并存储在一个整数变量中。

这是我做的

int val =0;
val = *(int*)array;
printf("value of p is %d\n",val);

我原以为结果是 12,但它是一些 8 位数字,我认为它可能是值的地址或其他东西。谁能告诉我我在这里做错了什么?

最佳答案

它永远不会给你十二个。

您正在获取两个单字节值,并将它们视为包含一个双字节实体。当你一起看它们时,你正在重新诠释它们的值(value)。整数 1 看起来像这样,作为位:000000012 像这样:00000010。编译器知道它们有多大,因此将允许您单独访问它们,但它们在您的数组中按顺序排列,在内存中彼此相邻。

一起检查这两个字节,就好像它们是 int 一样,您有:0000000100000010,其值不是 12;是 513。

为了进一步阅读,您正在做的是一种 "type punning" .

关于c - 将数组中的两个相邻字符存储到一个int中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189224/

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