我不确定以下简单代码中的while循环是如何工作的
short CountBits(unsigned int x){
short num_bits = 0;
while (x){
num_bits += x & 1;
x >>= 1;
}
return num_bits;
}
无符号整数如何评估为True或False?
我不确定以下简单代码中的while循环是如何工作的
short CountBits(unsigned int x){
short num_bits = 0;
while (x){
num_bits += x & 1;
x >>= 1;
}
return num_bits;
}
x
必须转换为true
或false
。算术、未作用域的枚举、指针或成员指针类型的prvalue可以转换为类型为bool
的prvalue。零值、空指针值或空成员指针值被转换为false
;任何其他值都被转换为true
。
while (x){ ... }
as
while (x != 0){ ... }
True表示任何不等于0的整数。因此,如果x的值为0,则循环将退出。
true
或false
的方式相同:0是false
,任何其他值都是true
。有些人会将测试写成while (x != 0)
;那完全是同一件事。
x
变为0
时不终止的机器。 - M.M