PUERTA | PUERTA CS 2018 | Pregunta 47

Considere el siguiente código C. Suponga que unsigned long intla longitud del tipo es de 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;
}

El valor devuelto cuando llamamos funcon la entrada 2 40 es

(A) 4
(B) 5
(C) 6
(D) 40

Respuesta: (B)
Explicación:

// 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;
}

Entonces, la respuesta es 5.

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *