-3

仕組みがわかりませんa<<b

そして、それは実際には何を意味するのa+= arr[i][j] ==0 && tfunc(i,j);でしょうか?

それは意味しますか:

if (arr[i][j]==0 && tfunc(i,j) == true)
    a += 1;

コードの一部は次のようになります。

int *eFunc(int* a) const{
   for(int i=0; i<8; ++i){
      for(int j=0; j<8; ++j){
         *a = b <<3^j; 
          a+= arr[i][j] ==0 && tfunc(i,j); 
      }
   }
   return a;
 }

前もって感謝します

4

1 に答える 1

2
*a = b <<3^j; 

<<よりも優先度が高いことを指摘してくれた @Holt に感謝し^ます。ステップバイステップでやってみましょう:

(b << 3) ^ j
b << 3     // Bitshifting operator. Shift b to the left by 3`
           // So for b = 0b0001  you get 0b1000 = 8
       ^ j // XOR with j for example
           // 0b1000 ^ 0b0010 = 0b1010 = 10

a最後に、その値を指す場所に割り当てます。

a+= arr[i][j] ==0 && tfunc(i,j); 
    arr[i][j] ==0                // if the element [i][j] from arr == 0 return true
                     tfunc(i,j)  // return of tfunc
                  &&             // if both statements are !=0, results 
                                 // in true, else in false
a+=                              // a = a + true or false is equal to
                                 // a = a + 1    or 0
于 2016-12-16T10:01:18.147 に答える