2011-06-15 87 views
1

我有以下C++代码片段。我有C++的一个基本的了解code.Please纠正我下面的代码解释何地需要: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减小时,它将遍历每个字节并执行此操作来继续循环,并且最终如果不满足条件,则循环将退出,否则,j将运行至j == 0。

我正确吗? * p和* s是什么意思?它会包含字节值吗?

+0

你能否提供所有变量声明的代码? – 2011-06-15 09:02:17

+0

如果p是一个指针,那么* p是该指针指示的对象 – 2011-06-15 09:04:34

回答

3

一些(像我)可能会认为下面是更具可读性

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),则所有位都是零。

+0

谢谢我也认为是相同的。问题中的代码令我困惑。 – JavaBits 2011-06-15 10:11:28

1

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