if (bCapture ? (pcDst & pcOppSide) != 0 : (pcDst & pcSelfSide) == 0) {
          mvs[nGenMoves] = MOVE(sqSrc, sqDst);

解决方案 »

  1.   

    首先判断bCapture的真假,真则执行(pcDst & pcOppSide) != 0,假则执行(pcDst & pcSelfSide) == 0。改变一下代码可以这样。if (bCapture)
    {
    if ((pcDst & pcOppSide) != 0)
    {
    mvs[nGenMoves] = MOVE(sqSrc, sqDst);
    }
    }
    else
    {
    if ((pcDst & pcSelfSide) == 0)
    {
    mvs[nGenMoves] = MOVE(sqSrc, sqDst);
    }
    }MOVE是一个定义的函数宏,不清楚功能,需要你自己查。
      

  2.   

      if (bCapture ? (pcDst & pcOppSide) != 0 : (pcDst & pcSelfSide) == 0) 这个if语句的意思就是一个a?b:c的语法.
    也就是a为真, 执行b, 不为真, 执行c, 整个语句的值就是b或者c的值; 在上面的语句里就是:   bCapture为真吗?, 为真则判断 pcDst和pcOppSide 位与 后 不等于0, 也就是if判断的是他们不等于0的这个条件是为真;
    不为真则判断pcDst和pcOppSide位 与后等于0吗, 判断的是他men等于0
      

  3.   

    if (bCapture ? ((pcDst & pcOppSide) != 0) : ((pcDst & pcSelfSide) == 0))