Consider the following C code. Assume that unsigned long int type length is 64…
2018
Consider the following C code. Assume that unsigned long int type length is 64 bits.
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);
}
The value returned when we call fun with the input 240 is
- A.
4
- B.
5
- C.
6
- D.
40
Attempted by 82 students.
Show answer & explanation
Correct answer: B
Answer: 5
Explanation:
First loop: starting with n = 240, repeatedly divide by 2 until the value is ≤ 1. This runs 40 times, so j becomes 40.
Second loop: start with j = 40 and divide by 2 (integer division) until j ≤ 1. The sequence is 40 → 20 → 10 → 5 → 2 → 1, which is five iterations, so sum = 5.
Therefore the function returns 5.