@
CRVV 语言还是充满这歧义. 我说的是「拿 Python 做这件事会出现 bug 」,不是说「 Python 本身的 bug 多」,一个语言基础性的东西都 bug 多, 谁还会用?
举一例: 数一个数中 1 的个数
最容易想到的办法是:
int countOne(const int num)
{
int count = 0;
int flag = 1;
while (flag != 0) {
if ((flag & num) != 0) {
count++;
}
flag <<= 1;
}
return count;
}
次容易想到的是
int countOne(const int num)
{
int count = 0;
unsigned int flag = 0x80000000;
while (flag != 0) {
if ((flag & num) != 0) {
count++;
}
flag >>= 1;
}
return count;
}
有点技巧性的
int countOne(int num)
{
int count = 0;
while (num != 0) {
count++;
num = num & (num - 1);
}
return count;
}
其中在 Python 中不能翻译最容易想到的那个, 因为往左移会无限拓展. 这就是「有的时候用 Python 搞位运算的东西会出现与自己判断不相符合的情况」,我没有说「 Python 的 bug 多」