сдвиг бита. Что означает (& lt; & lt; & quot;) в C ++?

Я не понимаю как 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;
}

заранее спасибо

-3

Решение

*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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]