Gate2018 cs Q51

0. 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

  • Option : B
  • Explanation :
    // n takes 2^40
    unsigned long int fun(unsigned long int n) {
    // initialized sum = 0
    unsigned long int i, j, 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.
Cancel reply

Your email address will not be published. Required fields are marked *


Cancel reply

Your email address will not be published. Required fields are marked *