gpt4 book ai didi

c - (~INT_MAX && INT_MAX) 返回 1?

转载 作者:行者123 更新时间:2023-11-30 18:23:53 26 4
gpt4 key购买 nike

我的印象是 INT_MAX 将打开 int 的所有 32 位。如果我否定它并与它本身“和”,我应该将全 0 与全 1 进行比较并返回 false。我错过了什么?

int x = INT_MAX;
x = ~x && INT_MAX;
printf("x = %d\n", x); /*Returns 1*/
x = 0;
x = ~x && INT_MAX;
printf("x = %d\n", x); /*Returns 1*/

编辑:哦,哇,我也翻转了符号位。使用 UNIT_MAX 给了我我需要的结果。谢谢大家!

最佳答案

您在这里使用有符号整数; ~INT_MAX == INT_MIN(编辑:表示二进制补码,这是每个现代处理器都使用的),而不是 0。在 C 中,除 0 之外的所有值(包括负数)都将在条件中使用时评估为 true。

如果您切换到无符号类型,一切都应该按预期工作,因为 ~UINT_MAX == 0

关于c - (~INT_MAX && INT_MAX) 返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469581/

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