gpt4 book ai didi

c - 无符号整数 4 的一元取反

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:32 25 4
gpt4 key购买 nike

如果 x 是 unsigned int 类型,这些语句是否有区别:

return (x & 7);

return (-x & 7);

我了解对无符号值取反会得到 max_int - value 的值。但是在任何特定的边界条件下,上述两个语句的返回值(即真/假)是否存在差异,或者它们在功能上是否相同?

最佳答案

测试代码:

#include <stdio.h>

static unsigned neg7(unsigned x) { return -x & 7; }

static unsigned pos7(unsigned x) { return +x & 7; }

int main(void)
{
for (unsigned i = 0; i < 8; i++)
printf("%u: pos %u; neg %u\n", i, pos7(i), neg7(i));
return 0;
}

测试结果:

0: pos 0; neg 0
1: pos 1; neg 7
2: pos 2; neg 6
3: pos 3; neg 5
4: pos 4; neg 4
5: pos 5; neg 3
6: pos 6; neg 2
7: pos 7; neg 1

对于 4(以及 0)的特定情况,没有区别;对于其他值,存在差异。您可以扩展输入的范围,但输出将产生相同的模式。

关于c - 无符号整数 4 的一元取反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293599/

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