Consider the following C code. Assume that unsigned long int type length is 64 bits

Consider the following C code. Assume that unsigned long int type length is 64 bits

Q. Consider the following C code. Assume that unsigned long int type length is 64 bits.

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;

}

Gkseries: Gkseries.com is a premier website to provide complete solution for online preparation of different competitive exams like UPSC, SBI PO, SBI clerical, PCS, IPS, IAS, IBPS PO, IBPS Clerical exam etc. & other graduate and post-graduate exams. Learn more on about us page