情况:
typedef unsigned int u32;
typedef unsigned char u8;
const u8 *x;
...
var = (u32)(*(const u32 *)x);
var应该包含一个DWORD大小的值。关于上面的作业陈述,我所知道的是:
x首先是一个指向u8大小的指针
价值。
然后将x转换为指向
u32大小的值,所以我们有:(const
u32*)x。
然后,在
获取32位值的顺序
它所指向的,所以我们有:
*(常量u32*)x
然后将被取消引用的数据转换为u32
大小。
最后,问题是:我认为在上面的#3中,去引用会说我们从中得到的值是32位的,所以如果是这样,那么为什么会有额外的强制转换(显式的?)去引用的值是32位?只做上面的第1步到第3步,而不必做第4步,不是很好吗?
谢谢你的澄清!
最佳答案
是的,最后的演员阵容是多余的。
关于c - 是否需要这种“额外”类型转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5248569/