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

2018

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

  1. A.

    4

  2. B.

    5

  3. C.

    6

  4. D.

    40

Attempted by 82 students.

Show answer & explanation

Correct answer: B

Answer: 5

Explanation:

  1. First loop: starting with n = 240, repeatedly divide by 2 until the value is ≤ 1. This runs 40 times, so j becomes 40.

  2. Second loop: start with j = 40 and divide by 2 (integer division) until j ≤ 1. The sequence is 40 → 20 → 10 → 5 → 2 → 1, which is five iterations, so sum = 5.

  3. Therefore the function returns 5.

Explore the full course: Gate Guidance By Sanchit Sir