GATE | GATE CS 2018 | Question 47
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
Answer: (B)
Explanation:
// 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; } |
So, answer is 5.
Please Login to comment...