我有以下c++代码段。我对c++代码有基本的了解,请根据需要更正以下代码的解释:
for (p = q->prnmsk, s = savedx->msk, j = sizeof(q->prnmsk);
j && !(*p & *s); j--, p++, s++);
它包含什么:q是char * 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),则所有位与为零。
关于c++ - C++代码翻译和解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6355330/