//class start--
//Global variable
static PMSK *savepr;
static PRC *prs;
//inside some method
static PMSK wkpm;
PMSK *pm;
if (ipf) {
k = to_bits(312, &msk); // This will return k=24 and msk =char(00000001),
if ( pm->orbits[k] & msk ) // See the answer of my previous question.
prs[i].pccused = 1;
}
对于to_bits方法,请参阅链接
Explain the following C++ method
我不熟悉C ++编码。在第二个if块中有什么用?并解释变量声明吗?
由于
答案 0 :(得分:2)
如果我理解正确,您希望了解if
- 条款:
if ( pm->orbits[k] & msk )
包含bitwise-AND operator,它取pm->orbits[k]
的位和msk
的位,并返回两个值中的位(即“AND”)一部分)。
例如:
0010 1101& 1010 1010 = 0010 1000
修改强>
建议您阅读a good beginners C++ book以了解pointers(->
)和数组([k]
)。
由于您没有提供有关PMSK类型的信息,我不知道mp->orbits[k]
会给您什么,除此之外:PMSK结构或类似乎包含一个名为orbits的数组,而pm->orbits[24]
表示它的第25个(不是第24个!)元素。
答案 1 :(得分:1)
if ( pm->orbits[k] & msk ) // check to see if they aare bit-by-bit identical.
变量声明是如何进行的?不知道你的意思,澄清。
答案 2 :(得分:0)
class start--
这是无效的语法。
static PMSK *savepr;
static PRC *prs;
这些是指向具有内部链接的PMSK,PRC类型的对象的指针。
static PMSK wkpm;
PMSK *pm;
具有内部链接的对象PMSK的实例和指向具有翻译单元范围的PMSK对象“wkpm”的指针。
if(ipf){
k = to_bits(312, &msk); // you might want to post this "to_bits" function
if ( pm->orbits[k] & msk ) // this returns the k+1 object in the array "orbits" and performs a bitwise AND with "msk"
// you might want to post the declaration for this pm instance and the class decaration
prs[i].pccused = 1; // this sets the member variable "pcussed" of object i + 1 in the array "prs" to 1
}