🤖️ ChatGPT 成了我的新老师

🤖️ ChatGPT 成了我的新老师

之前看 Node.js 下面这部分代码不懂复杂的位运算里面的门门道道, 且因为 Google 理解不了上下文又找不到答案, 于是尝试询问了一下 ️ ChatGPT, 它准确的为我解答了疑惑!

我: 下面代码中的位运算做了什么事

for (auto& s : stdio) {
    const int fd = &s - stdio;
    struct stat tmp;
    if (-1 == fstat(fd, &tmp)) {
      CHECK_EQ(errno, EBADF);  // Program closed file descriptor.
      continue;
    bool is_same_file =
        (s.stat.st_dev == tmp.st_dev && s.stat.st_ino == tmp.st_ino);
    if (!is_same_file) continue;  // Program reopened file descriptor.
    int flags;
    do flags = fcntl(fd, F_GETFL);
    while (flags == -1 && errno == EINTR);  // NOLINT
    CHECK_NE(flags, -1);
    if (O_NONBLOCK & (flags ^ s.flags)) {
      flags &= ~O_NONBLOCK;
      flags |= s.flags & O_NONBLOCK;