gpt4 book ai didi

c - 64 位数字的 NOT 在 c 中给出错误结果

转载 作者:行者123 更新时间:2023-11-30 21:26:25 24 4
gpt4 key购买 nike

有两个数字 a 和 b,都是 64 位。

代码:

a = a|b;

如果(!(a&b)){}

现在,在上述场景中,b 的第 34 位打开,而 a 的一些位打开。因此,根据情况 !(a&b) 应该结果为 0,但代码进入了 if 循环,这是错误的。问题是 !(a&b) 给出的是 1 而不是 0。有什么原因吗?

最佳答案

因为您不想创建 SSCE ,我给你做了一个:

#include <stdio.h>

int main(void) {
unsigned long long a = 42, b = 1ULL << 33;

a = a|b;
if(!(a&b))
printf("!(a&b)\n");
else
printf("(a&b)\n");

return 0;
}

并在ideone处运行它。它按预期输出 (a&b) 。您的问题不在于您向我们展示的代码。

关于c - 64 位数字的 NOT 在 c 中给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com