gpt4 book ai didi

c - *((类型*)x)与(*(类型*)x)?转换为指针然后在 C 中取消引用

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

要将变量 a[1] 转换为指针,然后在 C 中取消引用它,这两种格式似乎都有效。例如,

  1. *( (unsigned int *) a[1])
  2. (*(unsigned int *) a[1])

他们都正确吗?它们之间有什么区别吗?

最佳答案

如果您将它们视为完全独立的表达式,或者如果右侧周围上下文的优先级足够低(不会侵入表达式,因为它的优先级低于解引用运算符 *).

否则,第二个版本在强制转换表达式周围有一对 (),将其与周围上下文“隔离”。例如,具有最高优先级的后缀运算符将对这两个表达式的语义产生不同的影响

*((unsigned int *) a[1])[M]
// Dereference is applied to the result of `[M]`

(*(unsigned int *) a[1])[M]
// `[M]` is applied to the result of dereference

结果表达式不一定有效,但它们仍然说明了运算符-操作数分组的差异。例如。在整数 M 的情况下,第一个表达式有效,第二个表达式无效。在指针 M 的情况下,情况正好相反。

关于c - *((类型*)x)与(*(类型*)x)?转换为指针然后在 C 中取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023508/

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