类型转换在以下代码的语句1中无效吗?

詹西·拉尼(Jhansi Rani)
#include<stdio.h>

int main()
{
    int arr[3] = {2, 3, 4};
    char *p;
    p = arr;
    p = (char*)((int*)(p));
    printf("%d, ", *p);
    p = (int*)(p+1); //............statement 1
    printf("%d", *p);
    return 0;
}

在上面的代码中,p = (int*)(p+1);意味着将字符指针类型转换为整数指针。因此,当我们取消引用时p,它会提取内容直到下一个int大小(2个字节或4个字节,具体取决于编译器)。但是,当我在www.indiabix.com上解决此问题时,他们给出了

答案:2,0

怎么可能2, 0呢?根据我的分析,答案应该是2, 3谁能解释什么是正确答案,为什么?

萨胡

假设anint需要四个字节。

在小端系统中,的内存布局arr如下:

|   | <--- one byte
+---+---+---+---+---+---+---+---+---+---+---+---+
| 2 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 4 | 0 | 0 | 0 |
+---+---+---+---+---+---+---+---+---+---+---+---+

在大端系统中,的内存布局arr如下:

|   | <--- one byte
+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 0 | 0 | 2 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 4 |
+---+---+---+---+---+---+---+---+---+---+---+---+

在小端系统中

*p = 2;
*(p+1) = 0;

在大端序系统中

*p = 0;
*(p+1) = 0;

根据您的平台,输出将是:

2 0

或者

0 0

您拥有的代码可能会让您感到困惑。线

p = (char*)((int*)(p));

不会做该死的事。

线

p = (int*)(p+1);

具有与以下相同的效果:

p = p+1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以下代码中类型转换发生了多少次?

来自分类Dev

如何解释以下代码的输出?(与C中的类型转换有关)

来自分类Dev

我在以下代码中获得异步的好处并等待吗

来自分类Dev

如何为以下代码创建or语句

来自分类Dev

如何编写以下代码的类型约束

来自分类Dev

我对以下代码的理解正确吗?

来自分类Dev

以下代码在cpython中做什么

来自分类Dev

以下代码中“ *&”的用法是什么

来自分类Dev

在Python中,以下代码如何工作?

来自分类Dev

以下代码在C中做什么?

来自分类Dev

在Django中哪里执行以下代码?

来自分类Dev

以下代码中\ +的含义是什么

来自分类Dev

以下代码中的错误是什么?

来自分类Dev

以下代码中超级指向什么?

来自分类Dev

如何使以下代码中的结果重复?

来自分类Dev

递归在以下代码中如何工作?

来自分类Dev

我不明白以下代码中char buffer []与X类型对象对齐的原因

来自分类Dev

为什么在以下代码中无法投射类型为'WhereSelectEnumerableIterator的对象?

来自分类Dev

我无法在以下代码中将 Java 中的 int 转换为 boolean

来自分类Dev

如何修复以下代码中的“浮点数无法转换为浮点数[]”错误?

来自分类Dev

我的以下代码中可能存在路径遍历漏洞吗?

来自分类Dev

可以说以下代码在Python3中实现了多态性吗?

来自分类Dev

您能否解释以下代码,尤其是func语句

来自分类Dev

在以下代码段中,“ a = b + {1,2}”在C ++标准中的何处?

来自分类Dev

了解以下代码

来自分类Dev

优化以下代码

来自分类Dev

描述以下代码

来自分类Dev

如何在列表理解中转换以下代码片段

来自分类Dev

这些以下代码对有用吗?

Related 相关文章

热门标签

归档