gpt4 book ai didi

c++ - 使用引用和取消引用运算符读取代码行时遇到问题

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

我在阅读一系列 *& 运算符时遇到困难,无法理解方法中的两个代码谎言。这些行是:

int dummy = 1;
if (*(char*)&dummy) { //Do stuff
}

尽我所能确定:

  1. dummy 分配在栈上,其值设置为 1
  2. &dummy 返回被 dummy 使用的内存位置(即 1 所在的位置)
  3. (char*)&dummy&dummy 转换为指向 char 的指针,而不是指向 int 的指针
  4. *(char*)&dummy 取消引用 (char*)&dummy,返回数值为 1
  5. 的任何 char

这似乎是一种非常令人困惑的说法:

if (1){//Do stuuf }

我对这些行的理解是否正确?如果是这样,为什么有人会这样做(除了让我感到困惑)?

最佳答案

代码当然不可移植,但显然是为了检测系统的字节顺序:int(1) 的非零位位于何处取决于系统是大还是小字节序。在一种情况下,表达式的结果被假定为 0,在另一种情况下,它被假定为非零。不过,我认为这是未定义的行为。此外,理论上还有 DS9k endianess,它完全混淆了字节(尽管我认为没有任何系统真正做到这一点)。

关于c++ - 使用引用和取消引用运算符读取代码行时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912183/

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