考虑以下 C 代码。假设unsigned long int
类型长度为 64 位。
unsigned long int fun(unsigned long int n) {
unsigned long int i, j = 0, sum = 0;
for( i = n; i > 1; i = i/2) j++;
for( ; j > 1; j = j/2) sum++;
return sum;
}
当我们用输入 2 40 fun
时返回的值是
(一) 4
(乙) 5
(三) 6
(四) 40答案:(乙)
解释:
// n takes 2^40
unsigned long int fun(unsigned long int n) {
// initialized sum = 0
unsigned long int i, j = 0, sum = 0;
//First it takes i = n = 2^40,
//then it divides i by 2 and incremented once j
//each time, that's will make makes j = 40,
for( i=n; i>1; i=i/2) j++;
//Now the value of j = 40,
//it divides j by 2 and incremented once sum
//each time, that's will make makes sum = 5,
for( ; j>1; j=j/2) sum++;
//returns sum = 5
return sum;
}
所以,答案是5。
这个问题的测验