小编Mic*_*ney的帖子

使用 if 语句更改指针的位置,C++

我对 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)

c++ pointers chess

1
推荐指数
1
解决办法
125
查看次数

在 cpp 中将 uint64_t 位移位 uint16_t 时出现奇怪的错误

下面的函数尝试创建一个位板,其中设置的位位于第 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编译器

c++ binary hex chess bitboard

1
推荐指数
1
解决办法
80
查看次数

标签 统计

c++ ×2

chess ×2

binary ×1

bitboard ×1

hex ×1

pointers ×1