Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

GATE | GATE CS 2018 | Question 47

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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.



Quiz of this Question


My Personal Notes arrow_drop_up
Last Updated : 12 Aug, 2021
Like Article
Save Article
Similar Reads