考虑这个非常简单的程序。目的是打印最后2位(显示0,1,2 ou 3),然后打印下两位,依此类推。
#include <iostream>
using namespace std;
inline void test(uint_fast64_t k) {
for (int i=0; i<32; i++) {
cout << k%4 << endl;
k>>2;
}
}
int main() {
test(77968641563295808);
return 0;
}
输出是一个0(并且只有0)的列表,这是荒谬的。有什么可以解释的?奇怪的是,似乎小数字可以正常工作。另外我也知道问题不在格式化中,我手动将k%4的连续结果与0进行比较,结果总是如此。
答案 0 :(得分:2)
问题是k
未在循环内更新。 k>>2
未更新k
的值。如果您解决了这个问题,您将获得预期的结果。