C++代码翻译和解释

C++ code translation and explanation

本文关键字:解释 翻译 代码 C++      更新时间:2023-10-16

我有以下 c++ 代码片段。我对 c++ 代码有基本的了解。请在必要时更正我对以下代码的解释:

for (p = q->prnmsk, s = savedx->msk, j = sizeof(q->prnmsk);
           j && !(*p & *s); j--, p++, s++);

它包含什么:q 是字符 *q(如声明的(是结构类型MSK,根据代码。 Q->prnmsk包含字节数据,其中prnmask包含15个字节。

对于 s,情况类似。因此,在 for 循环中,当 j 减小时,它将遍历每个字节并执行此!(*p & *s)操作以继续循环,最终如果不满足条件,循环将退出,否则 j 将运行直到 j==0。

我说的对吗?*p 和 *s 是什么意思?它会包含字节值吗?

有些人(像我一样(可能认为以下内容更具可读性

int j;
for (j = 0; j < sizeof(q->prnmsk); ++j)
{
  if ((q->prnmsk[j] & savedx->msk[j]) != 0) break;
}

这意味着 Q->PRNMSK 和 savedx->msk 被迭代以找到第一次出现,其中位和都不为零。 如果 j 等于 sizeof(q->prnmsk(,则所有位和定为零。

是的,你是对的。 !(*p & *s)意味着他们想要检查q->prnmsksavedx->msk是否没有将相应的位设置为同时1