gpt4 book ai didi

c - 分析 &、&& 和 |对于这个代码?

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:00 24 4
gpt4 key购买 nike

我想用这段代码来说明区别

for(i = 32; i > 0; i--)
{
if(a&1 != 0) //bit mask
total += b;
a = a >> 1;
b = b << 1;
}

在代码中 & 用于“屏蔽”一点,如果使用 && 代替,结果将完全不同。在那种情况下,表达式 1 已被解释为真值 (TRUE),而不是用于保留其中一位的一位位置。正确的?但是如果我这样做会发生什么:

for(i = 32; i > 0; i--)
{
if(a|1 != 0) //bit mask
total += b;
a = a >> 1;
b = b << 1;
}

在第一种情况下,1 仅用于保留 LSB(最低有效位),即最右边的位,除此之外别无其他。 | 会做什么?如果我进行此更改,会有什么不同?

最佳答案

a&1 != 0

应该是

(a&1) != 0

!= 的优先级高于 &。否则 a&1 != 0 被读作 a & (1 != 0)

同样适用于 (a|1 != 0)

关于c - 分析 &、&& 和 |对于这个代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145096/

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