("<<") 在 C++ 中是什么意思?
What does ("<<") mean in 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;
}
提前致谢
*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
我不明白 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;
}
提前致谢
*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