我对 C++ 很陌生。我的编译器是 g++ 12.2.0。
我正在尝试使用if语句来更改指针分配的内容。我不明白为什么在添加附加if语句时它会停止工作。问题在于*movingPiece,如果if(a==2){}被注释掉则没有问题。
bool checkMove(int a , uint64_t s , uint64_t e, bool colour, uint64_t board, uint64_t black, uint64_t white, uint64_t pawn, uint64_t king, uint64_t queen, uint64_t bishop, uint64_t knight, uint64_t rook , uint64_t attackMap , uint64_t doubleAttackMap)
{
uint64_t x ,z , *movingPiece;
uint64_t *pieces = &white;
board = board &~ s;
if (colour){ uint64_t *pieces = &black; }
if (a == 0){
//pawn
uint64_t *movingPiece = &pawn; …Run Code Online (Sandbox Code Playgroud) 下面的函数尝试创建一个位板,其中设置的位位于第 N 个位置,通过位移 0x1 N 次来达到所需的结果。N 由 uint16_t 中的第 1-6 个最低有效位给出。然后将其屏蔽以隔离 6 个 lsb。
uint64_t endSquareFinder(uint16_t a){
a &= (0x003f);
return 0x0000000000000001 << a;
}
Run Code Online (Sandbox Code Playgroud)
所有输入均有效,除了 a = 0x001f 时,函数的输出为 0xffffffff80000000 而不是 0x0000000080000000。这对我来说非常奇怪。
gdb编译器