Salida de programas C | Conjunto 39 (Pre Incremento y Post Incremento)

Prerrequisito: Pre-incremento y Post-incremento  
Pregunta 1 
 

C

#include <stdio.h>
 
int main()
{
    char* p = "mayhem";
    char c;
    int i;
    for (i = 0; i < 3; i++) {
        c = *p++;
    }
    printf("%c", c);
 
    return 0;
}
  1. y
  2. h
  3. mi
  4. a
Answer : y 

Explicación: El puntero ‘p’ apunta a la tercera ubicación de la array de caracteres. La razón es que en la iteración del bucle ‘for’, el valor del puntero de carácter ‘p’ se ha incrementado tres veces.
Pregunta 2 
 

CPP

#include<stdio.h>
void test(char c[])
{
    c=c+2;
    c--;
    printf("%c",*c);
}
int main()
{
    char ch[5]={'p','o','u','r'};
    test(ch);
     
    return 0;
}

¿Cuál es la salida del programa anterior? 
 

  1. pags
  2. o
  3. tu
  4. r
Answer: o 

Explicación: cuando se pasa la array de caracteres ‘ch’ como argumento a la función ‘test()’, se pasa la dirección base de la array ‘ch[]’. La variable ‘c’ en la función ‘test()’ apunta a la segunda ubicación de la array. Y luego decrece en 1 apuntando a ‘o’.
Pregunta 3 
 

C

#include<stdio.h>
int main()
{
    int i;
    char ch[] = {'x', 'y', 'z'};
    char *ptr, *str1;
    ptr = ch;
    str1 = ch;
    i = (*ptr-- + ++*str1) - 10;
    printf("%d", i);
     
    return 0;
}

¿Cuál es el resultado del programa anterior si los valores ASCII de los caracteres ‘x’=120, ‘y’=121, ‘z’=122? 
 

  1. 231
  2. 233
  3. 232
  4. 363
Answer : 231

Explicación: El puntero ptr apunta a ‘x’. 
Paso 1: Dado que es una operación posterior al decremento, el valor sigue siendo 120 y luego se decrementa. 
Paso 2: El puntero str1 apunta a ‘x’. Dado que ++ y * tienen el mismo nivel de precedencia, la evaluación comienza de derecha a izquierda. Para la expresión ++*str1, en primer lugar se evalúa *str1, lo que da 120, es decir, el equivalente ASCII de x. A continuación, evaluamos el incremento de prefijo ++120 = 121. Por lo tanto, el resultado final es (120+121)-10=131

Pregunta 4: ¿Cuál será el resultado del siguiente programa? 
 

CPP

#include<stdio.h>
 
int main(void)
{
    char *ptr = "Linux";
    printf("\n [%c] \n", *ptr++);
    printf("\n [%c] \n", *ptr);
 
    return 0;
}

Producción : 
 

    [L] 

    [i]

Explicación: dado que la prioridad de ‘++’ y ‘*’ es la misma, el procesamiento de ‘*ptr++’ se realiza de derecha a izquierda. Siguiendo esta lógica, ptr++ se evalúa primero y luego *ptr. Así que ambas operaciones dan como resultado ‘L’. Ahora que se aplicó un sufijo ‘++’ en ptr, el siguiente printf() imprimiría ‘i’.
Pregunta 5: ¿Cuál será el resultado del siguiente programa? 
 

CPP

#include <stdio.h>
int main()
{
        int num1 = 5;
        int num2 = 3;
        int num3 = 2;
        num1 = num2++;
        num2 = --num3;
        printf("%d %d %d", num1, num2, num3);
        return 0;
}
  1. 231
  2. 311
  3. 327
  4. 321
Answer:311 

Este artículo es una contribución de Brahmani Sai . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

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 *