![Consider the following C code. Assume that unsigned long int type length is 64 bits](https://www.gkseries.com/blog/wp-content/uploads/2023/09/Consider-the-following-C-code.-Assume-that-unsigned-long-int-type-length-is-64-bits.jpg)
Q. Consider the following C code. Assume that unsigned long int type length is 64 bits.
![](https://www.gkseries.com/blog/wp-content/uploads/2023/09/Screenshot-959.png)
The value returned when we call fun with the input 240 is
(A) 4 (B) 5 (C) 6 (D) 40
Ans: 5
Sol:
// 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;
}