gpt4 book ai didi

c - 需要这个 "extra"转换吗?

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

情况:

typedef unsigned int u32;
typedef unsigned char u8;

const u8 *x;
...
var = (u32)(*(const u32 *)x);

var 应该包含一个 DWORD 大小的值。我对上面的赋值语句的了解是:

  1. x 首先是一个指向 u8 大小的指针值(value)。
  2. x 然后被强制转换为指向 au32 大小的值,所以我们有:(constu32 *)x。
  3. x 然后取消引用,在为了获得 32 位值它指向的是,所以我们有:*(const u32 *)x
  4. 然后将取消引用的数据转换为 u32大小。

所以最后,问题是:我认为在上面的#3 中,取消引用会说我们从中获得的值是 32 位大小的,所以如果是这种情况,那为什么会有一个额外的转换(明确的?)说取消引用的值是 32 位?只执行上面的步骤 1 到 3 而不必执行步骤 4 不是可以吗?

感谢您的澄清!

最佳答案

是的,最后的 (u32) 转换是多余的。

关于c - 需要这个 "extra"转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248569/

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